В чем разница между admin.firestore.Timestamp.now () и admin.firestore.FieldValue.serverTimestamp ()? - PullRequest
0 голосов
/ 16 февраля 2020

https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue.html#servertimestamp

https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp.html#now

Я не уверен, что понимаю разницу. Может ли кто-нибудь объяснить это?

То есть: какую разницу я бы получил, если бы просто использовал firebase.firestore.Timestamp.now () в качестве свойства временной метки объекта, который я собираюсь написать вместо firebase.firestore. FieldValue.servertimestamp ()?

Я бы предположил, что есть некоторые повышения точности? Как много ? Или это что-то еще?

1 Ответ

2 голосов
/ 16 февраля 2020

Timestamp.now() генерирует метку времени с использованием часов клиентского компьютера, что может быть неправильно, даже резко неверно.

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

Если вам абсолютно необходимо точное время, особенно такое, которое нужно проверить правила безопасности с использованием request.time , вы должны использовать отметку времени сервера. Если вам нужно время клиента, используйте Timestamp.now(). Почти всегда так предпочтительна временная метка сервера.

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