Итак, у меня есть облачная функция, которая запускается каждый раз, когда транзакция нравится / не нравится. Эта функция увеличивает / уменьшает LikeCount. Я использовал транзакции firestore, чтобы добиться того же. Я думаю, проблема в том, что код внутри блока транзакции выполняется несколько раз, что может быть правильным в соответствии с документацией.
Но мой счетчик лайков иногда обновляется некорректно.
return firestore.runTransaction(function (transaction) {
return transaction.get(transRef).then(function (transDoc) {
let currentLikesCount = transDoc.get("likesCount");
if (event.data && !event.data.previous) {
newLikesCount = currentLikesCount == 0 || isNaN(currentLikesCount) ? 1 : transDoc.get("likesCount") + 1;
} else {
newLikesCount = currentLikesCount == 0 || isNaN(currentLikesCount) ? 0 : transDoc.get("likesCount") - 1;
}
transaction.update(transRef, { likesCount: newLikesCount });
});
});
У кого-нибудь был подобный опыт