繁体   English   中英

Firebase:如何防止在firestore中编写特定字段? [重复]

[英]Firebase: How to prevent writing a specific field in firestore? [duplicate]

这个问题在这里已有答案:

规则集保护用户的条目,如下所示:

  • 只有他或管理员才能阅读他的数据
  • 只有管​​理员才能更新用户的权限
  • 用户可以更新他的所有数据,除非他设置了权限对象

该规则如下:

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.

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

好的,这是解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM