如何通过多个ID过滤Firestore集合

时间:2019-01-06 22:05:38

标签: firebase google-cloud-firestore firebase-security-rules

所以在我的数据库模式中,我有这样的东西

/collections/users/userId1 { 
   ...,
   id,
   relatedContracts: [id1, id2, id3]
}

/collections/contracts/contractId {
   ...,
   id,
}

在我的Firebase安全规则中,我拥有

    match /contracts/{contract} {
       function isOwnContract() {
           return request.auth.id == resource.data.creatorId || request.auth.id == recipientId
       }
       allow read, write: if isOwnContract()
     }

现在,我对如何筛选客户以仅获取我的相关合同感到非常困惑。如果引入了安全规则,我将无法在客户端上进行过滤。

我知道这个存在

firestore.collection(CONTRACTS).where(id, "==", contractId)

但是我该如何基于多个ID进行过滤

1 个答案:

答案 0 :(得分:0)

您当前can't fetch multiple ids per query on the client,因此您可以选择以下两种方式之一:

  1. 迭代用户文档中的每个合同ID,并分别获取每个文档(这并不像您想象的那样糟糕)
  2. 在每个合同中维护另一个关系,该关系包含将其作为关系的用户列表。然后在合同集合中搜索该列表中的用户ID。
相关问题