Firestore:查询用户有权访问的所有文档的集合

时间:2018-08-28 22:14:10

标签: firebase google-cloud-firestore

遇到我不清楚的情况时,有一个好的解决方案。

在Firestore中,我有一个集合,其中只允许用户访问某些文档。可以将用户分配给一个或多个帐户,并且帐户可以具有一个或多个用户。常规模型和规则可以按预期工作:

USER: {
  id       : abc123,
  accounts : [ xyz789, ... ]
}

ACCOUNT: {
  id      : xyz789,
  users   : [ abc123, ... ]
}

service cloud.firestore {
  match /databases/{database}/documents {
    match /accounts/{accountID} {
      allow read, write: if accountID in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.accounts;
    }
  }
}

根据我使用Firebase规则模拟器所能看到的,上述规则运行正常(我可以读取/更新列出我的用户ID的帐户,但不能读取/更新列出我的用户ID的帐户)。

问题是,如果我想通过查询运算符获取那些相同的帐户,则会收到错误消息。当我放松规则集时,错误确实消失了,但这并不理想。

firestore.collection('accounts').where('users', 'array-contains', userID)

ERROR: Missing or insufficient permissions

鉴于规则集和查询似乎引用了相同的记录,是否有办法使它们结合使用,还是我不得不放松规则以使其起作用?

0 个答案:

没有答案