我有这些Firestore安全规则。我需要检查添加的3个数量“ redAmount”,“ greenAmount”和“ blackAmount”是否超过了用户的余额。如果是这样,则应拒绝更新。
function checkSums() {
return futureDocument().redAmount + futureDocument().blackAmount +
futureDocument().blackAmount <= getUserDoc().amount;
}
但是,如果其中一个数量未定义=>未设置,则此功能将失败,我想将其设置为0,但不能。有关如何解决此问题的任何想法?
无法通过参考“如何验证字段未定义”问题来解决此问题。
答案 0 :(得分:1)
通过非常疯狂的长期解决方法(而不是使用函数,use或')来解决此问题
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')))
)
}
我最终不使用它,而只是使用云功能创建文档,而没有赋予用户删除它的权利。