【问题标题】:Firestore ServerTimestamp QueryFirestore 服务器时间戳查询
【发布时间】:2020-12-22 07:20:50
【问题描述】:

考虑到多个客户端将写入该集合,我想知道对于给定集合中的 2 个或更多文档,Firestore ServerTimestamp 是否有可能完全相同。我问这个是因为,Firestore 没有为创建的文档提供自动递增的序列号,我们必须依靠 ServerTimestamp 来假设串行写入。我的用例要求对文档进行编号或至少类似于“线性写入”模型。我的应用是基于移动和网络的

(还有其他方法可以增加数字,例如使用 FieldValue.Increment() 方法的 Firebase 云函数,我已经在这样做了,但这增加了一层复杂性和延迟)

是否可以假设在给定集合中创建的每个文档都具有唯一的时间戳并且不会发生冲突? Firestore 是对集合的写入进行排队,还是并行执行写入?

提前致谢。

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    是否可以假设在给定集合中创建的每个文档都具有唯一的时间戳并且不会发生冲突?

    不,这样假设是不安全的。但也极不可能发生冲突,具体取决于写入的实际发生方式。如果您需要有保证的顺序,请在文档的另一个字段中添加另一条随机数据,并使用其排序顺序以确定性方式打破任何联系。您必须自己决定这是否适合您的用例。

    Firestore 是对集合的写入进行排队,还是并行执行写入?

    您应该认为所有写入都是并行的。不保证写入的顺序,因为它根本不能很好地扩展。

    【讨论】:

    • 这回答了我的问题,谢谢。虽然我不确定是否有另一个包含随机数据的字段,并且对字段上的集合进行排序会解决我的问题。现在,我想我会使用我所拥有的——云功能端的递增逻辑。事实上,我正在按照你的建议做。文档中有一个字段由云函数递增。感谢您的快速回复。
    猜你喜欢
    • 2021-05-30
    • 2018-11-27
    • 2021-04-19
    • 2020-10-24
    • 2020-07-10
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多