Я снова приду к вам, ребята, за помощью.У меня есть приложение, в котором вы можете пополнить свой виртуальный кошелек с помощью кредитной карты.
Моя структура подписчиков:
- collection
transactions/{transactionId}
- содержит владельцаUID и сумма пополнения. - коллекция
users/{userId}/personal/wallet
, содержащая { funds: 0 }
Я держу кошелек во вложенной коллекции personal
информации, потому что я не хочу, чтобы другиепользователи могут видеть его.
В любом случае, у меня есть триггер onCreate
с именем walletSync
для новых документов в коллекции transactions
, из которого я беру сумму и добавляю ее к текущим средствам пользователя через runTransaction
.
Проблема в том, что функция иногда запускается трижды ... для одного документа.Вот скриншот.Я зарегистрировал транзакции ID (это всего лишь один документ) и, как вы можете видеть, onCreate обрабатывается три раза, поэтому мой кошелек пополняется в три раза реальным значением.
Вот мой код функции,в которой я отмечаю любую обработанную транзакцию processed: true
, чтобы я мог проигнорировать ее в следующий раз, когда она сработает.Как вы можете видеть из журналов, это сообщение processed_already
никогда не появляется, что означает, что триггер не извлекает новые данные, в следующий раз, когда он запускается.
У меня нет идей, пожалуйста, сообщите.
РЕДАКТИРОВАТЬ: Вот моя функция: https://pastebin.com/PRA7CbxL
![enter image description here](https://i.stack.imgur.com/xwrbU.jpg)