У меня есть куча комментариев в базе данных Firebase, и я хочу сделать некоторые обновления для комментариев через облачную функцию (это упрощенный пример, я буду делать некоторую логику, которая требует облачной функции).
Что мне нужно сделать, так это просмотреть все комментарии в базе данных, настроить узел рейтинга и затем обновить базу данных с помощью скорректированных комментариев.
Я потратил много времени на изучение этого, но яЯ совершенно новичок в облачных функциях, так что мне очень трудно понять это.Я предполагаю, что хочу сохранить все изменения для всех комментариев (их может быть тысячи) в массиве или объекте, а затем выполнить обновление за один раз вместо каждого комментария отдельно?
Кстати, этокод не работает, я предполагаю, что массив и возврат совершенно неверны.
exports.increaseRating = functions.database.ref('/comments/')
.onUpdate((snapshot) => {
var updates = [];
snapshot.before.forEach((element) => {
var comment = element.val();
comment.rating += 1000;
updates.push(comment);
});
return updates;
})
Код, который я использую для обновления одной записи.Мне нужно сделать одно и то же для всех комментариев одновременно.
exports.increaseRating = functions.database.ref('/comments/{commentId}')
.onUpdate((snapshot, context) => {
const comment = snapshot.before.val();
const newRating = comment.rating += 1000;
const now = new Date().getTime();
if (comment.lastUpdate) {
if (comment.lastUpdate > now - (30 * 1000)) {
return null;
}
}
return admin.database().ref(`/comments/${context.params.commentId}`).update({
"rating": newRating,
"lastUpdate": now
})
})