【发布时间】:2019-02-19 10:02:08
【问题描述】:
我有这些 Firestore 安全规则。我需要检查三个金额“redAmount”、“greenAmount”和“blackAmount”加在一起是否超过了用户的余额。如果是这样,更新应该被拒绝。
function checkSums() {
return futureDocument().redAmount + futureDocument().blackAmount +
futureDocument().blackAmount <= getUserDoc().amount;
}
但是,如果其中一个金额未定义 => 未设置,则此函数将失败,我希望为 0,但我不能。有关如何解决此问题的任何想法?
参考“如何验证字段未定义”问题无法解决此问题。
【问题讨论】:
-
看来
in运算符最适合这种情况。见stackoverflow.com/questions/53458413/… 类似(redAmount in futureDocument() ? futureDocument().redAmount : 0)。 -
第 16 行:意外的“futureDocument”。 @FrankvanPuffelen 我认为没有 ?如果没有“if”运算符,则为运算符。我查看了所有文档。我以前一直在使用“in”运算符,但您必须将其与 if 结合使用。
-
能否请您不要将问题标记为重复? @弗兰克
-
Hmmm.... 在这种情况下,如果没有每个文档中的金额的默认值,我不确定用例是否可行(例如:
"redAmount": 0)。 -
是的,最后我也这样做了。 @FrankvanPuffelen
标签: firebase google-cloud-firestore firebase-security