因此,我以这种方式对数据进行了排序:
MyCollection //main collection
--(All documents) //I want all documents of main collection
--publicSubcollection //I want ONLY publicSubcollection of those documents
--(All documents) //I want all documents of publicSubcollection
这是我在应用程序中的工作方式:
query = firestore().collection('MyCollection').doc().collection('publicSubcollection')
.where('act', '==', 1)
.where('city', '==', this.state.selected_city)
.orderBy('update_time', 'desc')
.limit(10);
query.onSnapshot({
//do something
})
,它不返回任何内容,空对象。 我尝试使用Postman调用REST Api,它也返回空对象。我尝试只调用“ MyCollection”,它返回了我那里的一些数据。那么,如何实际查询特定子集合中的文档?我在这段代码中做错什么了?
答案 0 :(得分:2)
在Firestore查询中不带参数的情况下使用doc()
毫无意义。如果不带参数,它将生成带有随机文档ID的DocumentReference。该ID肯定不存在,并且您的查询将不返回任何结果。如果要查询子集合,则需要能够建立该子集合的路径,包括该路径中的所有文档ID。 Firestore路径中没有通配符匹配项。换句话说,您需要将一个字符串传递给doc()
,该字符串标识要查询的文档的子集合。该文档不需要存在-只需命名即可。
如果您实际上是在查询称为“ publicSubcollection”的所有子集中的所有文档,则需要使用collection group query。可能看起来像这样:
query = firestore()
.collectionGroup('publicSubcollection')
.where('act', '==', 1)
.where('city', '==', this.state.selected_city)
.orderBy('update_time', 'desc')
.limit(10);