我正在使用Firestore作为Flutter项目的后端,并且数据库被嵌套以在文档下具有子集合。这是结构:
我有从Root集合中找到的数据,并且试图从那里获取子集合,但是我不知道该怎么做。
应该有一个get()
方法可用,但我什么也没得到。
以下是该函数的代码:
void _getNext(DocumentSnapshot doc) async {
int v = doc.data.length;
String id = doc.documentID;
print('length = $v \t id= $id');
await doc.reference.get().then((val){
val.data.forEach((k, v){
print('k = $k & v = $v');
});
});
await doc.data.forEach((k,v){
print("new k = $k, v = $v");
});
await doc.reference.collection(id).getDocuments().then((val){
val.documents.forEach((e){
print("another k = $e");
});
});
}
按“文学”文档(来自根集合),我得到的唯一答复是:
I/flutter (13395): length = 0 id= Literature
此文档有多个子集合,但返回的长度为零。当我将伪数据添加到字段中时,其他代码块可以正常工作,但是在我的情况下不需要。
谢谢您的帮助。
答案 0 :(得分:2)
get()
没有CollectionReference
方法,您需要一个DocumentReference
。
当前情况没有问题,您可能要使用getDocuments()
,因为您的集合下没有子集合,但是documents
请注意集合和文档的交替模式。您的收藏和文件必须始终遵循这种模式。您不能引用集合中的集合或文档中的文档。
答案 1 :(得分:1)
collection()返回CollectionReference。从API文档中可以看出,CollectionReference及其超类Query都没有一个名为get()的方法。我怀疑您想改用getDocuments()。