javascript - 来自 firebase 数据库的聚合值

标签 javascript firebase firebase-realtime-database

我必须计算 Firebase 中存储的一堆产品的总价。由于在 firebase 中每个产品都会单独返回,我如何知道何时完全计算出总数?

例如:

var total = 0;
firebaseApp.database().ref('/products/').once('value')
.then(function(snapshot) {
    var product = snapshot.val();
    total += product.price;
});

如果我有 12 个产品,只有从数据库中检索到所有这些产品后才能返回总数,因此在我确定所有产品之前,我无法使用变量 total已获取。

最佳答案

我认为你应该重组你的数据,看起来像这样

products
    -product1
    -product2
    -product3
     .....

selected_products
    user1:
       -products_list:
            -product2: true
            -pruduct3: true
            -product6: true
       -total_price: 140

这样,您就不必担心在客户端计算价格。只需在用户选择产品时将价格相加即可。

如果这不是用例(用户选择产品),意味着您出于其他原因需要总价,那么此方法不会有帮助。

编辑:

如果你只需要计算所有产品的价格(不知道为什么),你可以监听child_added事件:

var totalPrice = 0;
firebaseApp.database().ref(`/products/`).on('child_added', function(snapshot){
    var product = snapshot.val();
    totalPrice += product.price;
})

完成所有这些后,您应该有一个变量,其中包含所有产品的总价格值。

同样,您可以通过一次('value')调用获得相同的结果。

firebaseApp.database().ref(`/products/`).once('value', function(snapshot){
    snapshot.forEach(function(productSnapshot){
        totalPrice += productSnapshot.val().price;  
    })
})

关于javascript - 来自 firebase 数据库的聚合值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568734/

相关文章:

javascript - 如何解析包含函数的 JSON 字符串?

javascript - Firebase实时数据交互

javascript - 使用set()方法更新数据效率的疑问

javascript - 在 Firebase Web 中获取正确的子级

swift - 使用swift在firebase中搜索子子

javascript - BODMAS 计算器

javascript - 我如何正确地在分页表中附加 div

ios - 从 firebase 获取子节点的子节点(swift 3)

firebase - Firebase中基于多个where子句的查询

javascript - 动态创建多个具有唯一名称的 wavesurfer 对象