首页 > 解决方案 > Firebase:如何防止在 Firestore 中写入特定字段?

问题描述

规则集保护用户的输入,如下所示:

规则如下所示:

match /users/{userId} {
  allow read: if isCurrentUser(userId) || isAdmin();
  allow write: if (isCurrentUser(userId) && !isModifyingPermissions()) || isAdmin();

  function isModifyingPermissions(){
    return request.resource.data['permissions'] != null;
  }
}

我被这个isModifiyingPermissions()功能困住了。如果请求具有permissions属性值,它会正确拒绝写入。但是,如果未提供任何属性,则规则会崩溃permissions,说明如下:

Error: simulator.rules line [19], column [15]. Property permissions is undefined on object.

如何写“检查请求资源上的属性的存在”?

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


好的,这是解决方案:

  function isModifyingPermissions(){
    return request.resource.data.keys().hasAny(["permissions"]);
  }

推荐阅读