如何检测安全规则中Firestore文档中是否存在字段

问题描述 投票:1回答:1

我有这些Firestore安全规则。我需要检查添加的3个数量“redAmount”,“greenAmount”和“blackAmount”是否超出了用户的余额。如果是,则应拒绝更新。

function checkSums() {
    return futureDocument().redAmount +  futureDocument().blackAmount + 
    futureDocument().blackAmount <= getUserDoc().amount;
}

但是如果其中一个金额未定义=>未设置,这个函数会失败,我希望它为0,但我不能。有想法该怎么解决这个吗?

通过引用“如何验证字段未定义”问题无法解决此问题。

firebase google-cloud-firestore firebase-security-rules
1个回答
1
投票

用一个非常疯狂的长期解决方法修复了这个问题(而不是使用函数,使用或者)

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')))
                   )
    }

我最终没有使用它,只是使用云功能创建文档,而不是让用户有权删除它。

© www.soinside.com 2019 - 2024. All rights reserved.