Tengo una función de base de fuego que establece dos valores en cero. ¿Hay alguna manera de establecer el valor de "lastDaily" en el valor de "clic" antes de establecer clic en 0?
exports.dailyReset = functions.pubsub.schedule("01 0 * * *") .timeZone("Europe/London") .onRun((context) => { dbCon.once("value", function(snapshot) { snapshot.forEach(function(child) { child.ref.update({ lastDaily: 0, click: 0, }); }); }); });Lo siguiente debería hacer el truco (no probado):
exports.dailyReset = functions.pubsub.schedule("01 0 * * *") .timeZone("Europe/London") .onRun(async (context) => { const snapshot = await dbCon.get(); const promises = []; snapshot.forEach(child => { const oldClickValue = child.val().lastDaily; promises.push(child.ref.update({ lastDaily: oldClickValue, click: 0, })); }) return Promise.all(promises); }); Tenga en cuenta que usamos Promise.all() para devolver una Promesa cuando todo el trabajo asíncrono esté completo . Por la misma razón, tenga en cuenta que usamos el método get() , que devuelve una Promesa.
Otra solución, en lugar de Promise.all() , sería usar el método update() como se muestra en esta sección de documentación .