我必须计算 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/