Разница между использованием FieldValue.serverTimestamp и Date.now - PullRequest
0 голосов
/ 29 апреля 2019

Есть ли какая-либо производительность или функциональное различие между firestore.FieldValue.serverTimestamp и использованием Date.now() (с центрального сервера)?

1 Ответ

2 голосов
/ 29 апреля 2019

Если вы записываете Date.now() с клиента в базу данных, вы записываете клиентскую метку времени.Если, с другой стороны, вы пишете firestore.FieldValue.serverTimestamp, это приводит к записи серверной отметки времени.

Существует несколько типов изменений между ними:

  1. Временная метка на клиенте часто отличается от фактического времени на сервере, что означает, что эти два значения будут разными.
  2. Если вы пишете временную метку от клиента, это означает, что злоумышленник можетукажите свое значение.
  3. Клиент гарантированно будет иметь некоторую задержку при подключении к базе данных, что означает, что даже на идеально настроенном клиенте и с совершенно дружественным пользователем все еще будетРазница между значениями.
  4. Если вы используете временную метку сервера, вы можете применить ее значение в правилах безопасности.См. Документацию по Request.time для получения информации об этом.

Обратите внимание, что существуют допустимые варианты использования для использования любого из значений.Например:

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