3

在 Firebase 实时数据库中,自动生成的 id 会按照创建时间的时间顺序保存所有条目。Firestore 似乎是完全随机的。有没有办法像在数据库中生成 id 一样创建 id?还是我需要传递一个创建时间戳并按此排序?

4

2 回答 2

3

来自关于添加数据的 Firestore 文档

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

因此,如果您想按时间顺序排序,您确实需要在文档中添加时间戳字段。您可以为此使用服务器端时间戳,如更新数据的 Firestore 文档中所示:

docRef.update({
  timestamp: firebase.firestore.FieldValue.serverTimestamp()
});

有了它,您可以在控制台和您自己的查询中按时间顺序排序。

于 2018-10-10T13:22:29.027 回答
1

有没有办法像在数据库中生成 id 一样创建 id?

不,那里没有!与 Fireabse 实时数据库 id 不同,Cloud Firestore id 实际上是完全随机的。不包含时间组件。这就是为什么没有顺序。在这种情况下,id 的冲突也极不可能发生,您可以/应该假设它们将是完全唯一的。这就是他们的设计目的。

还是我需要传递一个创建时间戳并按此排序?

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

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

于 2018-10-10T13:07:40.127 回答