颤振和火力基地和子集合
Posted
技术标签:
【中文标题】颤振和火力基地和子集合【英文标题】:flutter and firebase and sub-collections 【发布时间】:2021-03-19 11:11:43 【问题描述】:我一直在寻找高低。希望有人可以提供帮助!
firestore 设置: usersCollection -> userIDs 列表 -> itemsCollection -> itemIDs 列表 -> item_name 等
我能够找到的许多示例都针对特定的用户 ID。我想要的是从所有用户 ID 加载所有 itemID。因此:
用户1 ---- item1 ----项目2 ----第3项 用户2 ---- item1 ----项目2 等等……我不需要像上面那样显示,我想显示所有项目(最终使用用户ID来操作数据)。有些人建议嵌套流媒体,但这会消耗很多能量(我不喜欢这个想法)
然后我正在考虑使用某种 2D for 循环,或者我也看到了 for each 循环。我相信这些会更合适....
我知道如何获取用户列表,但是我需要获取每个用户的项目列表...我如何获取该部分!?目前我正在尝试在带有图块的列表视图中显示信息,但现在我只需要知道如何访问项目列表。
我试过这样做。
List listUsers = await FirebaseFirestore.instance
.collection("users")
.get();
for (int i = 0; i < listUsers.length; i++)
FirebaseFirestore.instance
.collection("users")
.doc(listUsers[i].documentID.toString())
.collection("items")
.snapshots();
但我们不能忘记还有一个项目列表所以....
List listUsers = await FirebaseFirestore.instance
.collection("users")
.get();
List listItems = await FirebaseFirestore.instance
.collection("items")
.get();
for (int i = 0; i < listUsers.length; i++)
for (int j = 0; j < listItems.length; j++)
FirebaseFirestore.instance
.collection("users")
.doc(listUsers[i].documentID.toString())
.collection("items")
.doc(listItems[j].documentID.toString())
.snapshots();
???????????????请帮忙...
==============编辑===============================
回答
List listItems = await FirebaseFirestore.instance
.collectionGroup('items')
.get()
.then((value) => value.docs);
然后您可以像这样访问列表项及其值:
print('OMG------------ $listItems[0].documentID.toString()'); //document ID
print('OMG------------ $listItems[0].data()['item_name']'); // specific value within collection
【问题讨论】:
【参考方案1】:如果我理解正确,这看起来像 collectionGroup
的示例,它由具有相同 ID 的所有集合组成。您可以在Firebase documentation 上查看一般概念。
当然,这个特性也有 Flutter 实现。你可以找到它documentation on pub.dev。
【讨论】:
优胜者!收藏团聚餐!我编辑了我的问题以显示答案。 很高兴你能弄清楚,因为我没有任何“操场”来做这件事。我将不胜感激接受答案。以上是关于颤振和火力基地和子集合的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据作为子集合添加到firebase颤振中的所有用户文档?