在Cloud Firestore规则中-我有一个名为task的文档,我想查看某些数据(assignee字段)是否为空/不存在。

我试过了:


resource.data.assignee == null-不起作用(错误)
!resource.data.hasAll(['assignee'])-不起作用(错误)


从文档中可以看出,这确实造成了错误:
// Error, key doesn't existallow read: if resource.data.nonExistentKey == 'value';

最佳答案

阅读Firestore安全规则文档here的列表比较,我们可以看到,如果列表中包含所有值,则hasAll返回true。

// Allow read if one list has all items in the other list
allow read: if ['username', 'age'].hasAll(['username', 'age']);


request.resource.data是包含字段和值的映射。为了使用hasAll,我们必须首先获取键作为值列表,如here所示。

!resource.data.keys().hasAll(['assignee'])

关于firebase - 在Cloud Firestore规则中-如何检查键是否为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46630728/

10-12 23:43