Моя цель - создать идемпотентную облачную функцию, которая обновляет счетчик определенных документов.
Вместо увеличения или уменьшения счетчика, я запрашиваю документы и обновляю счетчик с общим числом результатов.
const db = admin.firestore();
export const unprocessedReceiptsCount =
functions.firestore.document('Purchases/{purchaseId}')
.onWrite(async (snapshot, context) => {
const unprocessedRef = db.collection('Purchases').where('hasBeenProcessed', '==', false);
const unprocessedSnap = await unprocessedRef.get();
const count = unprocessedSnap.docs.length;
console.log(count);
return count;
});
Когда я обновляю поле hasBeenProcessed в любом документе, оно должно регистрировать непротиворечивый номер. Тем не менее, я получаю результаты по всей доске: 2, 63, 8, 44. Каждый раз, когда функция запускается, она показывает, что кажется случайным числом.
Что я делаю не так?