Вы получаете два обратных вызова из-за использования FieldValue.serverTimestamp()
. Это значение на самом деле является токеном, который отправляется на серверы Firestore, где метка времени определяется и, наконец, записывается в базу данных. Локально на клиенте, значение не известно во время записи, однако запись документа все еще происходит в локальном кэше.
Ваш слушатель сначала получает запись в локальный кэш (до того, как отметка времени известна), затем снова с сервера после того, как отметка времени известна. Вы можете посмотреть метаданные снимка , чтобы выяснить источник данных, если это важно для вас.