Firestore createId()编号未按时间顺序排列

时间:2018-10-10 12:55:17

标签: firebase google-cloud-firestore

在Firebase实时数据库中,自动生成的ID会将所有条目按创建时的时间顺序保留。 Firestore似乎是完全随机的。有没有一种方法可以像在数据库中生成ID一样创建ID?还是我需要通过创建时间戳并以此排序?

2 个答案:

答案 0 :(得分:1)

  

有没有一种方法可以像在数据库中生成ID一样创建ID?

不,没有!与Fireabse实时数据库ID不同,Cloud Firestore ID实际上纯粹是随机的。没有时间成分。这就是为什么没有命令。在这种情况下,id的冲突也不大可能发生,您可以/应该假定它们将是完全唯一的。那就是他们的目的。

  

还是我需要通过创建时间戳并以此排序?

您猜对了,应该根据timestamp属性订购商品。

对于Android, here ,您可以找到如何使用模型类或FieldValue.serverTimestamp()添加日期。

答案 1 :(得分:1)

来自Firestore documentation on adding data

  

重要:与Firebase实时数据库中的“推送ID”不同,Cloud Firestore自动生成的ID不提供任何自动排序。如果希望能够按创建日期排序文档,则应将时间戳记存储为文档中的字段。

因此,如果您想按时间顺序订购,确实需要在文档中添加一个时间戳字段。您可以为此使用服务器端时间戳,如Firestore documentation on updating data所示:

func debug(_ message: String, eventid: String = Foundation.UUID().uuidString, logFile: String = "log.log", evenIdents: Bool = true) -> String

func warning(_ message: String, eventid: String = Foundation.UUID().uuidString, logFile: String = "log.log", evenIdents: Bool = true) -> String

因此,您可以在控制台中以及在自己的查询中按时间顺序进行排序。