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); //
});
我有 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); //
});