Несоответствие в подсчете даже с FieldValue.increment - PullRequest
0 голосов
/ 05 мая 2019

Мой пример использования: я хочу сохранить в базе данных количество пользователей Firebase для быстрого и легкого доступа. Для этого у меня есть облачная функция, прослушивающая user.onCreate, и она просто увеличивает поле в документе, используя атомарный FieldValue.increment.

Вот код:

exports.createProfile = functions.auth.user().onCreate(async user => {
 return Promise.all([
    addProfileToDatabase(),
    function() {
     db.collection('someCollection').doc(docId).update({
      count: admin.firestore.FieldValue.increment(1)
     )}
    }
  ])
})

Проблема: количество в базе данных становится больше, чем количество аутентифицированных пользователей, показанное на вкладке Аутентификация в Firebase. Я регулярно сбрасываю его на правильное число, а затем оно снова медленно увеличивается.

Я читал о регулировании записи в документе, но вместо этого это должно привести к меньшему числу, если вообще. Но почему счет в базе данных всегда превышает фактический счет?

1 Ответ

0 голосов
/ 05 мая 2019

Не видя ваш код, я могу только представить, что ваша функция не идемпотентна. Возможно, что функции могут вызываться более одного раза за инициирующее событие. Это было бы объяснением, почему ваш счет превышает ожидание.

Подробнее о идемпотентности облачных функций см. В документации , а также этого видео .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...