首页 > 解决方案 > Firestore createId() id 不按时间顺序排列

问题描述

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

标签: firebasegoogle-cloud-firestore

解决方案


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

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

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

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

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


推荐阅读