在Firebase实时数据库中,自动生成的ID会将所有条目按创建时的时间顺序保留。 Firestore似乎是完全随机的。有没有一种方法可以像在数据库中生成ID一样创建ID?还是我需要通过创建时间戳并以此排序?
答案 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
因此,您可以在控制台中以及在自己的查询中按时间顺序进行排序。