Javascript 聚合来自firebase数据库的值
我必须计算储存在firebase中的一堆产品的总价格。由于在firebase中,每种产品都将单独返回,我如何知道何时完全计算出总数 例如:Javascript 聚合来自firebase数据库的值,javascript,firebase,firebase-realtime-database,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个产品,那么只有在从
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_添加的事件:
var totalPrice = 0;
firebaseApp.database().ref(`/products/`).on('child_added', function(snapshot){
var product = snapshot.val();
totalPrice += product.price;
})
当所有这些都完成后,您应该有一个变量,其中包含所有产品的价格值
类似地,您可以通过一次('value')调用获得相同的结果
我认为您应该重新构造数据,使其看起来像这样
products
-product1
-product2
-product3
.....
selected_products
user1:
-products_list:
-product2: true
-pruduct3: true
-product6: true
-total_price: 140
这样,您就不必担心在客户端计算价格。用户选择产品时,只需将价格相加即可
如果这不是用例(用户选择产品),这意味着您出于其他原因需要总价,那么这种方法将没有帮助
编辑:
如果您只需要计算所有产品的价格(不确定原因),您可以收听child_添加的事件:
var totalPrice = 0;
firebaseApp.database().ref(`/products/`).on('child_added', function(snapshot){
var product = snapshot.val();
totalPrice += product.price;
})
当所有这些都完成后,您应该有一个变量,其中包含所有产品的价格值
类似地,您可以通过一次('value')调用获得相同的结果
你是对的。我建议将总价保存到一个额外的节点。这样你就不必等着知道总价了,你是对的。我建议将总价保存到一个额外的节点。这样你就不必等待知道总价格是多少。不幸的是,我需要将数据库中所有产品的价格相加,因此这不会解决我的问题,但无论如何,谢谢。不幸的是,我需要将数据库中所有产品的价格相加,因此这不会解决我的问题,但无论如何,谢谢