现在,我们在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查询集合组?