【发布时间】:2020-01-25 19:36:32
【问题描述】:
我正在尝试从 firestore 查询和检索一组文档和子文档,并将它们存储在我创建的一些自定义对象中。顶部集合映射到“Blockspaces”,子集合是“Blocks”。
我可以毫无问题地检索顶级集合,但是当我尝试遍历子集合文档并将它们存储在我的顶级对象中时,什么都不会返回。
这是执行工作的代码。 1.我从顶级集合中检索“blockspaces”数据。 2. 对于每个文档,然后我获取对子级集合(“块”)的引用,创建它并添加到顶级对象 3. 返回数据。
Future<List<Blockspace>> fetchBlockSpaces(String ownerId) async {
List<Blockspace> blockspacesObjects = List<Blockspace>();
var query = Firestore.instance
.collection("blockspaces")
.where('users', arrayContains: ownerId);
await query.getDocuments().then((blockspaces) {
blockspaces.documents.forEach((blockspace) async {
Blockspace b1 = Blockspace(
blockSpaceId: blockspace.documentID,
ownerId: blockspace.data['ownerId'],
icon: blockspace.data['icon'],
color: blockspace.data['color'],
name: blockspace.data['name'],
);
List<Block> currentBlocks = List<Block>();
QuerySnapshot blocks = await blockspace.reference.collection('blocks').getDocuments();
blocks.documents.forEach((block) {
Block block1 = Block(
name: block.data['name'],
color: block.data['color'],
icon: block.data['icon'],
// userPermissions: userRoles,
ownerId: block.data['ownerId']);
currentBlocks.add(block1);
});
b1.blocks = currentBlocks;
blockspacesObjects.add(b1);
});
});
return blockspacesObjects;
}
这看起来应该很简单,我错过了什么?
【问题讨论】:
标签: flutter google-cloud-firestore