У меня есть функция firebase, которая устанавливает два значения равными нулю. Есть ли способ установить значение «lastDaily» на любое значение «щелчок», прежде чем установить для щелчка значение 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,
});
});
});
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Следующее должно сделать трюк (непроверенный):
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);
});
Обратите внимание, что мы используем Promise.all(), чтобы вернуть обещание, когда вся асинхронная работа завершена. По той же причине обратите внимание, что мы используем метод get(), который возвращает обещание.
Другим решением вместо Promise.all() было бы использование метода update(), как показано в этом раздел документации.