【问题标题】:Firestore calculate values from documentsFirestore 从文档中计算值
【发布时间】:2021-05-08 15:54:47
【问题描述】:

我创建了一个 Future,它打印出我的 firestore 集合“产品”文档中的所有字段,但该集合是许多同名集合之一,如下所示,因此我打印出所有值每个集合文档的字段。我想为其自己的集合“产品”中的每个文档添加“产品价格”

第一个产品系列:

第二个产品系列:

我的功能是收听所有“产品”集合。当我尝试为他们的每个文档打印 productPrice 字段值时,我将它们全部打印出来,如下面的控制台所示。我需要将 29.33 + 39.69 的 productPrice 值加在一起来制作 69.02 但我不知道如何在不添加价值为 149.99 的不相关文档的情况下执行此操作

  final FirebaseAuth _auth = FirebaseAuth.instance;
  final FirebaseFirestore _cloudStore = FirebaseFirestore.instance;

  List<OrderModel> orders = [];
  List<ProductModel> orderProductList = [];


Future startListening() async {
    User currentUser = _auth.currentUser;

    if(currentUser != null){
      _cloudStore
          .collection("orders")
          .doc(currentUser.email)
          .collection("orders")
          .snapshots()
          .listen((event) {

        orders = event.docs.map((value){
          return OrderModel(
            value.data()["name"], 
            value.data()["date"], 
            value.data()["dateTime"], 
            value.data()["status"],
            value.data()["productImage"],
          );
        }).toList();


        for(var i = 0; i < orders.length; i++){

          if(currentUser != null){
          _cloudStore
              .collection("orders")
              .doc(currentUser.email)
              .collection("orders")
              .doc(orders[i].dateTime)
              .collection("products")
              .snapshots()
              .listen((event){

                orderProductList = event.docs.map((value){

                  return ProductModel(
                    value.data()['productName'],
                    value.data()['productQuantity'],
                    value.data()['productPrice'],
                    value.data()['productImage'],
                  );
                  
                }).toList();

                print('separate');

                event.docs.forEach((value){
                  var prices = value.data()['productPrice'];
                  print(prices);
                });
                
                notifyListeners();

              });
          }
    }

        
        notifyListeners();

      });
    } else {
      return null;
    }
  }

我在控制台中的当前输出:

Restarted application in 881ms.
Reloaded 0 of 983 libraries in 32ms.
flutter: separate
flutter: 149.99
flutter: separate
flutter: 29.33
flutter: 39.69

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    如果我正确理解了这个问题,如果您像这样更改代码,它应该可以工作:

                double sum = 0.0;
    
                event.docs.forEach((value){
                  var prices = value.data()['productPrice'];
                  sum = sum + prices;
                  print(prices);
                });
    
                print(sum);
    

    您可以在 print('separate'); 声明之后添加它。

    【讨论】:

    • 赞美你我已经坚持了一段时间了
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2018-09-03
    • 2020-11-03
    • 2018-07-10
    • 2021-09-23
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多