在 Cloud Firestore 规则中 - 如何检查键是否为空 [英] In Cloud Firestore rules - How do I check if a key is null
问题描述
在 Cloud Firestore 规则 - 我有一个名为 task
的文档,我想查看某些数据(assignee
字段)是否为空/不存在.
In Cloud Firestore Rules - I have a document called task
and I want to see if some data (assignee
field) is null / don't exists.
我试过了:
resource.data.assignee == null
- 不起作用(错误)!resource.data.hasAll(['assignee'])
- 不起作用(错误)
resource.data.assignee == null
- Does not work (Error)!resource.data.hasAll(['assignee'])
- Does not work (Error)
从文档中 - 它指出这确实会产生错误:<代码>//错误,key不存在允许读取:如果 resource.data.nonExistentKey == 'value';
From the documentation - it states that this indeed creates an error:
// Error, key doesn't exist
allow read: if resource.data.nonExistentKey == 'value';
推荐答案
阅读 Firestore 安全规则文档的列表比较 此处,我们可以看到 hasAll
如果列表中存在所有值,则返回 true.
Reading the list comparisons of the Firestore Security rules documentation here, we can see that hasAll
returns true if all values are present in the list.
// Allow read if one list has all items in the other list
allow read: if ['username', 'age'].hasAll(['username', 'age']);
request.resource.data
是一个包含字段和值的映射.为了使用 hasAll
,我们必须首先将键作为值列表获取,如图所示 这里.
The request.resource.data
is a map containing the fields and values. In order to use hasAll
, we must first get the keys as a list of values as shown here.
!resource.data.keys().hasAll(['assignee'])
这篇关于在 Cloud Firestore 规则中 - 如何检查键是否为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!