我有这些Firestore安全规则。我需要检查添加的3个数量“redAmount”,“greenAmount”和“blackAmount”是否超出了用户的余额。如果是,则应拒绝更新。
function checkSums() {
return futureDocument().redAmount + futureDocument().blackAmount +
futureDocument().blackAmount <= getUserDoc().amount;
}
但是如果其中一个金额未定义=>未设置,这个函数会失败,我希望它为0,但我不能。有想法该怎么解决这个吗?
通过引用“如何验证字段未定义”问题无法解决此问题。
用一个非常疯狂的长期解决方法修复了这个问题(而不是使用函数,使用或者)
return checkMinusAmount('redAmount') && checkMinusAmount('blackAmount')
&& checkMinusAmount('greenAmount') && (
(futureDocument().redAmount + futureDocument().blackAmount + futureDocument().greenAmount <= getUserDoc().amount)
(futureDocument().redAmount + futureDocument().blackAmount <= getUserDoc().amount !has('greenAmount'))
(futureDocument().redAmount + futureDocument().greenAmount <= getUserDoc().amount !has('blackAmount'))
(futureDocument().greenAmount + futureDocument().blackAmount <= getUserDoc().amount !has('redAmount'))
(futureDocument().greenAmount <= getUserDoc().amount (!has('redAmount') && !has('blackAmount')))
(futureDocument().blackAmount <= getUserDoc().amount (!has('redAmount') && !has('greenAmount')))
(futureDocument().redAmount <= getUserDoc().amount (!has('blackAmount') && !has('greenAmount')))
)
}
我最终没有使用它,只是使用云功能创建文档,而不是让用户有权删除它。