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

发布于 2025-01-24 04:06:54 字数 389 浏览 0 评论 0原文

我有诸如客户 - > documnetid->订单(收集)与所有客户相同。 我需要在列表中显示所有客户的订单列表。 如果客户再次订购项目,则需要创建另一个列表。

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

如果我提供特定的文档ID,我可以获取数据。但是我需要从所有客户那里获得订单。 请帮助我。 谢谢

I have data something like Customer -> documnetid -> Orders(collection) same as for all customer.
I need to show the list of orders from all the customer in a list.
If a customer orders a item again it needs to create another list.

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

I can get the data if I provide specific document id. But I need to get orders from all the customers.
Please help me in this.
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掐死时间 2025-01-31 04:06:54

您应该使用集合组查询,如 firebase文档软件包文档

这些线条:

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

You should use a Collection Group query, as explained in the Firebase documentation and in the Dart cloud_firestore package documentation.

Something along these lines:

FirebaseFirestore.instance
    .collectionGroup("orders")
    .where('orderStatus', isEqualTo: 'ordered')
    .get()
    .then((QuerySnapshot querySnapshot) {
        querySnapshot.docs.forEach((doc) {
            //...
        });
    });
一刻暧昧 2025-01-31 04:06:54

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

因此,您可以通过客户ID获取所有订单和订单,

因此,如果您想获得特定客户的订单,您可以通过此获得这样的订单:

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

并且您可以获取所有类似的订单:

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

或者如果您仍然想通过数据结构来完成你可以通过循环做

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

You need to change your data structure. Like you can create a new different separate collection for orders with the same fields + customer id field.

so you can get all orders and orders by customer id

So if you want to get an orders for a particular customer you can get by this :

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

And you can get all orders like this:

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

OR if you still want to do it by your data structure you can do it by 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);
            });
          });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文