node.js - example - firebase functions parameters
función de función de nube de firebase que se repite en ejecución (1)
Quiero hacer un resumen de los datos existentes, pero la función de nube de Firebase realiza el bucle para que la suma 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 ,
Iniciar sesión
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 oyentes de referencia de base de datos utilizando el método on () . Esto deja al oyente unido:
Su devolución de llamada se activará para los datos iniciales y nuevamente cada vez que los datos cambien
En su lugar, debe usar 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 detector refUser.on(...)
y luego está cambiando el valor en esa ubicación en la devolución de llamada: refUser.set(newCount);