Firebase Firestore安全规则,限制子项/字段

Firebase Firestore安全规则,限制子项/字段,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,Firebase RTDB的newData.hasChildren(['name','age','gender')在Firestore中的等效方式是什么?如何限制子项/字段 更新: 我已经用Firestore规则更新了我的问题,并详细解释了我的问题 match/{country}{ 允许读取:如果为真; 允许创建:如果是isAdministrator() &&incomingData()。countryCode是字符串 &&incomingData()。拨号代码为字符串; 允许更新:如果(is

Firebase RTDB的
newData.hasChildren(['name','age','gender')
在Firestore中的等效方式是什么?如何限制子项/字段

更新: 我已经用Firestore规则更新了我的问题,并详细解释了我的问题

match/{country}{
允许读取:如果为真;
允许创建:如果是isAdministrator()
&&incomingData()。countryCode是字符串
&&incomingData()。拨号代码为字符串;
允许更新:如果(isAdministrator()| | isAdminEditor())
&&incomingData()。countryCode是字符串
&&incomingData()。拨号代码为字符串;
允许删除:如果是isAdministrator();

}
您现在所做的只是检查提供的两个字段值是否为字符串。您不需要更新数据中只存在那些to字段。您可以使用数据映射的方法来验证更新中是否只存在某些字段。例如,这可能会起作用:

request.resource.data.keys().hasOnly(['countryCode', 'dialCode'])

在对象上还有许多其他方法可以帮助您确定其内容。

您现在所做的只是检查提供的两个字段值是否为字符串。您不需要更新数据中只存在那些to字段。您可以使用数据映射的方法来验证更新中是否只存在某些字段。例如,这可能会起作用:

request.resource.data.keys().hasOnly(['countryCode', 'dialCode'])

对象上还有许多其他方法可以帮助您确定其内容。

您的更新规则似乎根本没有检查写入的数据。到底是什么规则没有按照你期望的方式工作?@DougStevenson我已经更新了我的
update
规则。现在,如果我尝试使用一个未提及的子项进行更新,比如说'countryAliasName'或其他什么,它将在不引发任何异常的情况下进行更新。这怎么能避免?什么是
incomingData()
?@DougStevenson我的错,对不起
icomingData()
request.resource.data
。您的更新规则似乎根本没有检查写入的数据。到底是什么规则没有按照你期望的方式工作?@DougStevenson我已经更新了我的
update
规则。现在,如果我尝试使用一个未提及的子项进行更新,比如说'countryAliasName'或其他什么,它将在不引发任何异常的情况下进行更新。这怎么能避免?什么是
incomingData()
?@DougStevenson我的错,对不起
icomingData()
request.resource.data
。这正是我要找的!谢谢你:)这正是我想要的!谢谢你:)