我对 Firestore 的 FieldValue.serverTimestamp() 行为有一些疑问:
纳秒精度: FieldValue.serverTimestamp() 的纳秒部分是否始终以“0000”结尾? Firestore 实际上是否为服务器时间戳提供纳秒分辨率?
索引和冲突: 我想通过使用 FieldValue.serverTimestamp() 对文档进行排序来对文档进行排名。 如果我创建合适的索引,Firestore 的强一致性模型能否保证这些服务器时间戳不会冲突?
没有索引的大量请求: 在没有索引的场景下,即使一致性强,如果不同文档同时发出大量 FieldValue.serverTimestamp() 请求,服务器时间戳是否有可能完全匹配从而发生冲突?
我阅读了 Firestore 文档并在线搜索了有关 FieldValue.serverTimestamp() 的精度和一致性保证的详细信息。
我希望找出纳秒是否总是以“0000”结尾,以及强一致性是否可以防止时间戳冲突。但是,我找不到明确的答案。
任何见解或官方文档参考将不胜感激。谢谢!
TL;DR:您不应依赖服务器端时间戳值的唯一性。
- ...如果我创建了适当的索引,Firestore 的强一致性模型是否能保证这些服务器时间戳不会发生冲突?
没有。
- ...服务器时间戳是否有可能完全匹配并因此发生冲突?
是的。
很有可能使用相同的时间戳创建多个文档,这与 Firestore 使用的一致性模型的强度无关。