Javascript admin.firestore.Timestamp.now()和admin.firestore.FieldValue.serverTimestamp()之间有什么区别?

Javascript admin.firestore.Timestamp.now()和admin.firestore.FieldValue.serverTimestamp()之间有什么区别?,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我不确定我是否理解其中的区别。有人能解释一下吗 也就是说:如果我只是使用firebase.firestore.Timestamp.now()作为我将要编写的对象的时间戳属性,而不是firebase.firestore.FieldValue.servertimestamp(),那么会有什么不同 我想会有一些精确性的提高?多少钱?还是其他原因?Timestamp.now()使用客户端计算机的时钟生成时间戳,这可能是错误的,甚至是彻底错误的 FieldValue.serverTimestamp()将令

我不确定我是否理解其中的区别。有人能解释一下吗

也就是说:如果我只是使用firebase.firestore.Timestamp.now()作为我将要编写的对象的时间戳属性,而不是firebase.firestore.FieldValue.servertimestamp(),那么会有什么不同

我想会有一些精确性的提高?多少钱?还是其他原因?

Timestamp.now()使用客户端计算机的时钟生成时间戳,这可能是错误的,甚至是彻底错误的

FieldValue.serverTimestamp()
将令牌编码到文档字段中,每当收到写入操作时(而不是从客户端发出时),该令牌就会使用Google服务器上的时钟转换为时间戳。无论恶意用户做什么,所有谷歌服务上的时钟时间都保证是正确的


如果您确实需要一个正确的时间,特别是需要使用检查的时间,那么应该使用服务器时间戳。如果需要客户端的时钟时间,请使用
Timestamp.now()
。几乎总是首选服务器时间戳。

如果我使用admin.firestore.timestamp.now()(使用Node.js SDK)并确保将所有服务器保留在一个位置,会怎么样?那有什么不同吗?没有,还是和我描述的一样。服务器时间戳使用Google服务器的时间感,可以在移动和web客户端的安全规则中进行检查。其他任何东西都不能。