Función de la función Firebase Cloud Función de bucle en ejecución.

Quiero hacer un resumen de los datos existentes, pero la función de nube de Firebase hace el bucle para que la sum que hice no sea válida. ¿Hay alguna solución a mi problema? gracias

esto en mi captura de pantalla

construcción de la base de datos imagen ,

Iniciar sesión imagen

const functions = require('firebase-functions'); const admin = require("firebase-admin"); admin.initializeApp(functions.config().firebase); var db = admin.database(); exports.makePurchaseSummaryAdd = functions.database.ref('/invoice_data/{pushIdInvoice}/item/{pushIdItem}') .onCreate(event => { var name = event.data.child('itemName').val(); var quantity = event.data.child('quantity').val(); var ref = db.ref('/invoice_data/' + event.params.pushIdInvoice + '/idUser'); ref.on("value", function(snapshot) { var refUser = db.ref('/user_data/' + snapshot.val() + '/purchaseSummary/' + name.toUpperCase()); refUser.on("value", function(snapshotUser) { if (snapshotUser.exists()){ console.log('Ada Data'); var count = snapshotUser.val(); var newCount = quantity + count; refUser.set(newCount); console.log('create', count, newCount, name.toUpperCase()); } else { console.log('Tidak Ada Data'); } }, function (errorObject) { console.log("The read failed: " + errorObject.code); }); }, function (errorObject) { console.log("The read failed: " + errorObject.code); }); return true; }); 

Está adjuntando escuchas de referencia de base de datos utilizando el método on () . Esto deja al oyente adjunto:

Su callback se activará para los datos iniciales y nuevamente cuando los datos cambien

En su lugar, debe utilizar una vez () :

Escucha exactamente un evento del tipo de evento especificado, y luego deja de escuchar

Su código está en bucle porque adjunta un escucha refUser.on(...) y luego cambia el valor en esa ubicación en la callback: refUser.set(newCount);