Firebase 为Firestore配置规则,以便用户只获取自己的记录

Firebase 为Firestore配置规则,以便用户只获取自己的记录,firebase,firebase-authentication,google-cloud-firestore,Firebase,Firebase Authentication,Google Cloud Firestore,这是这个问题的后续问题 我想对我的火炉店定个规矩 service cloud.firestore { match /databases/{database}/documents { match /analysis/{analysis} { allow read, write: if request.auth.uid == resource.data.owner_uid; } } } 我的目标是 a.执行列表操作时,仅返回属于用户的文档 b.只有用户拥有的文

这是这个问题的后续问题

我想对我的火炉店定个规矩

service cloud.firestore {
  match /databases/{database}/documents {
    match /analysis/{analysis} {
      allow read, write: if request.auth.uid == resource.data.owner_uid;
    }
  }
}
我的目标是
a.执行列表操作时,仅返回属于用户的文档
b.只有用户拥有的文档才能被该用户读取或写入

通过上述配置b.完成。

如何完成a.

请记住,firestore规则不是过滤器,而是对查询的服务器端验证。 您应该始终使查询与规则相匹配,否则将出现权限错误

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

const userId=firebase.auth().currentUser.uid
db.collection(“analysis”)。其中(“owner\u uid”,“==”,userId)
还有一件事。 使用当前规则,您的用户将无法创建新文档,只能编辑现有文档,以下是允许此操作的更新规则:

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;

您可以通过查询实现客户端。我认为你的第一个问题是规则不可能出现的。是否可以基于筛选器而不是请求限制访问。auth?@sheerun你有想要实现的示例吗?我只允许用户执行某些查询谢谢你,我花了很长时间查找此信息。有人知道文档中的解释在哪里吗?谢谢,这帮了大忙--也在文档中找到了,这里: