在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/