FIRESTORE:按文档ID查询collectionGroup

时间:2019-05-26 11:55:41

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

现在,我们在Firestore上有集合组查询!大。

但是由于某些规则,如何通过文档ID查询集合组?

我尝试过:

return this.afs.collectionGroup('tokens', (ref) => {
      return ref.where(firestore.FieldPath.documentId(), '==', `${this.afAuth.auth.currentUser.uid}`)
    }).valueChanges();

但是我得到:

Invalid third parameter to Query.where(). When querying a collection group by FieldPath.documentId(), the value provided must result in a valid document path, but 'JKq2AFqGkkSLHsIVaXz4l3wwmfh1' is not because it has an odd number of segments (1).

我也尝试过:

return this.afs.collectionGroup('tokens', (ref) => {
      return ref.where(firestore.FieldPath.documentId(), '==', `/users/JKq2AFqGkkSLHsIVaXz4l3wwmfh1`)
    }).valueChanges();

但是我得到0个结果

我的代币收集文档ID基于我的/users/{userID}

我对令牌收集的规则是:

 match /{path=**}/tokens/{userID} {
            allow read, write, create, update, delete: if request.auth.uid == userID;
    }

例如,这是我需要获取的文档

/suuntoAppAccessTokens/dimitrioskanellopoulos/tokens/JKq2AFqGkkSLHsIVaXz4l3wwmfh1

当然,如果我使用:

return this.afs.collectionGroup('tokens', (ref) => {
      return ref.where(firestore.FieldPath.documentId(), '==', `/suuntoAppAccessTokens/dimitrioskanellopoulos/tokens/JKq2AFqGkkSLHsIVaXz4l3wwmfh1`)
    }).valueChanges();

它可以工作,但是胜过了收集组查询的目的

那么有什么方法可以通过文档ID而不是路径+文档ID查询集合组?

0 个答案:

没有答案