如何从firebase的所有用户的所有子集合中获取数据?



我有类似Customer ->documnetid→订单(收款)与所有客户相同。我需要在一个列表中显示所有客户的订单列表。如果客户再次订购商品,则需要创建另一个列表。

FirebaseFirestore.instance
.collection("customer")
.doc('a44d4c1b-7faa-4139-b707-a40499fe4ce5')
.collection("orders")
.where('orderStatus', isEqualTo: 'ordered')
.snapshots(),

如果我提供特定的文档id,我可以获得数据。但我需要得到所有顾客的订单。请帮帮我。谢谢你

您应该使用Collection Group查询,正如Firebase文档和Dartcloud_firestore包文档中所解释的那样。

下面的内容:

FirebaseFirestore.instance
.collectionGroup("orders")
.where('orderStatus', isEqualTo: 'ordered')
.get()
.then((QuerySnapshot querySnapshot) {
querySnapshot.docs.forEach((doc) {
//...
});
});

您需要更改您的数据结构。例如,您可以为具有相同字段+客户id字段的订单创建一个新的不同的单独集合。

所以你可以得到所有的订单和订单的客户id

所以如果你想获得一个特定客户的订单,你可以通过这个:

FirebaseFirestore.instance
.collection("orders")
.where('customerId', isEqualTo: 'a44d4c1b-7faa-4139-b707-a40499fe4ce5')
.snapshots(),

你可以得到所有这样的命令:

FirebaseFirestore.instance
.collection("orders")
.snapshots(),

或者如果你仍然想用你的数据结构来做你可以用loop

List orders = [];

FirebaseFirestore.instance
.collection('customer')
.get().then((QuerySnapshot querySnapshot) {
querySnapshot.docs.forEach((doc) {
dynamic data = doc.data();
orders.addAll(data['orders'] as List);
});
});

相关内容

  • 没有找到相关文章

最新更新