У меня есть два триггера Firebase для увеличения и уменьшения событий для событий onCreate и onDelete соответственно.
Сценарий :
Когда пользователю что-то нравится на клиенте, в базе данных firebase создается новый путь, и тигр onCreate переключается. Затем счет увеличивается, как я и ожидал.
Когда пользователь «что-то не любит» на клиенте, в базе данных firebase удаляется путь и запускается триггер onDelete. Затем счет уменьшается.
Выпуск :
Когда пользователю что-то быстро нравится, а затем что-то не нравится, оба запроса на создание нового пути и удаление существующего пути отправляются в firebase практически одновременно.
Иногда триггер onDelete срабатывает перед тигром onCreate.
Я действительно ищу некоторое представление о лучших практиках здесь или о тех, кто уже сталкивался с подобной ситуацией.
Вот расширенная версия моих функций onCreate и onDelete
exports.increaseCount = functions.database.instance(dbInstance).ref('/path/to/existingPath')
.onCreate((snap, context) => {
ref.transaction(function(count) {
return (count || 0) + 1;
}
});
exports.decreaseCount = functions.database.instance(dbInstance).ref('/path/to/newPath').onDelete((change, context) => {
dbRef.transaction(function(count) {
if(count && (count > 0)){
var newCount = count - 1;
return newCount;
} else {
return 0;
}
}
});