flutter 和 firebase 以及子集合

flutter and firebase and sub-collections

我一直在高低搜索。希望有人能帮忙!

Firestore 设置: usersCollection -> userID 列表 -> itemsCollection -> itemID 列表 -> item_name 等

我能找到的很多示例都针对特定的用户 ID。我想要的是从所有用户 ID 加载所有 itemID。因此:

我不需要像上面那样显示,我想显示所有项目(最终使用userID来操作数据)。有些人建议嵌套流媒体,但这会消耗很多能量(我不喜欢这个想法)

然后我在考虑使用某种 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

如果我理解正确的话,这看起来像是 collectionGroup 的示例,其中包含具有相同 ID 的所有集合。您可以在 Firebase documentation.

上查看一般概念

当然Flutter也有这个功能的实现。你可以找到它 documentation on pub.dev.