Firebase JS 如何收集每个 child 有数量的产品的 children?

Firebase JS how do I collect the children of the product that each child has a quantity?

我有 evrey 产品有 children 和 evrey child 有 children 的产品,我想收集 evrey 产品的总和

我的代码是:

var firebaseProductsCollection = database.ref().child('finalVerifoneProducts');
firebaseProductsCollection.on('value', function(products) {
  products.forEach(function(firebaseProductReference) {
    code = firebaseProductReference.key;
    products.forEach(function(firebaseProductReference) {
      var code = firebaseProductReference.key;
      var firebaseGetBarcodes = database.ref().child('finalVerifoneProducts').child(code);
      firebaseGetBarcodes.on('value', function(productsBarcodes) {
        productsBarcodes.forEach(function(firebaseProductReference2) {
              var product = firebaseProductReference2.val();
              if (!productArray.includes(product.code)) {
                // we have new product 
                console.log(product.code + " : " + totalSum);
                productArray.push(product.code);
                totalSum = product.sum;
              } else {
                totalSum = parseInt(totalSum) + parseInt(product.sum);
              } // close the else 

但是第一个产品的数量总是0,其他产品都出错了

当您从数据库加载路径时,该路径下的所有数据都已包含在您返回的快照中。所以不需要单独加载嵌套的子数据。

了解这一点后,您可以将代码显着简化为:

const firebaseProductsCollection = database.ref().child('finalVerifoneProducts');
firebaseProductsCollection.on('value', function(products) {
  let totalSum = 0; // 
  products.forEach(function(productSnapshot) {
    code = productSnapshot.key;
    productSnapshot.forEach(function(productChildSnapshot) {
      var product = productChildSnapshot.val();
      totalSum += product.sum;
    });
  });
  console.log(totalSum); // 
});