为Firestore配置规则,以便用户只获取他们拥有的记录

w--*_*w-- 9 firebase firebase-authentication google-cloud-firestore

这是对Firestore权限这个问题的后续跟进

我正在尝试在我的火堆上设置规则

service cloud.firestore {
  match /databases/{database}/documents {
    match /analysis/{analysis} {
      allow read, write: if request.auth.uid == resource.data.owner_uid;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是
.在执行列表操作时,仅返回属于用户的那些文档
b.只有用户拥有的文档才能被该用户读取或写入.

用上面的配置 b.完成了.
我该怎么做才能完成.

jeb*_*ben 17

请记住,firestore规则不是过滤器,它们是对查询的服务器端验证.您应该始终使您的查询符合您的规则,否则您将获得权限错误.

在您的情况下,您已经制定了规则来强制读取/列出用户拥有的文档.现在您只需使用正确的过滤器进行相应的查询:

const userId = firebase.auth().currentUser.uid

db.collection("analysis").where("owner_uid", "==", userId)
Run Code Online (Sandbox Code Playgroud)

另一件事.根据您当前的规则,您的用户将无法创建新文档,只能编辑现有文档,以下是允许的更新规则:

allow read: if request.auth.uid == resource.data.owner_uid;

allow write: if request.auth.uid == resource.data.owner_uid
             || request.auth.uid == request.resource.data.owner_uid;
Run Code Online (Sandbox Code Playgroud)