Firestore安全规则,限制子域

时间:2018-10-25 06:56:31

标签: firebase google-cloud-firestore firebase-security-rules

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

更新: 我已经用Firestore规则更新了我的问题,并详细说明了我的问题。

match /{country} {
  allow read: if true;
  allow create: if isAdministrator()
              	&& incomingData().countryCode is string
              	&& incomingData().dialCode is string;
  allow update: if (isAdministrator() || isAdminEditor())
              	&& incomingData().countryCode is string
              	&& incomingData().dialCode is string;
  allow delete: if isAdministrator();
}

createreaddelete正常工作。但是,如果我尝试使用Hashmap对任何未提及的子项进行更新,则更新将不会引发任何异常,这与Firebase数据库规则不同,在Firebase数据库规则中,我们提到了newData.hasChildren([])中所有可能的子项。

1 个答案:

答案 0 :(得分:4)

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

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

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