【问题标题】:What is the recommended practice for generating unique IDs in Firebase?在 Firebase 中生成唯一 ID 的推荐做法是什么?
【发布时间】:2020-11-27 03:35:34
【问题描述】:
在 SQL Server 中,每当我们想要生成唯一 ID 时,我们都有 NEW_ID() 函数。有时,当难以分配主键时,我会使用它来唯一标识一行。
我现在正在编写一个 kotlin android 应用程序,我需要将用户信息存储在一个集合 -> 文档中。为每个用户生成唯一 ID 的推荐做法是什么?我应该使用从 1 开始的简单递增值吗?
【问题讨论】:
标签:
android
firebase
kotlin
google-cloud-firestore
【解决方案1】:
Firestore 不为文档实现自动递增 ID。自己实施会导致性能损失——这根本无法按照 Firestore 的要求进行扩展。
如果您将新文档添加到集合中,并且它们还没有自然 ID,那么当您对 CollectionReference 使用 add() 方法时,SDK 将为您生成一个随机 ID。这是添加新文档的首选方式,在documentation 中有介绍。
如果您需要对这些文档进行排序,则应添加一个可用于对查询进行排序的字段。如果你想要基于时间的排序,你应该添加一个带有当前时间的时间戳字段。
【解决方案2】:
如果您要对用户进行身份验证,那么我建议您使用 firebase 自身生成的 UID。您可以参考this 获取当前用户的UID。
否则,您可以像我们在使用实时数据库时使用 push() 一样生成唯一 ID。
DocumentReference key;
key = db.collection("YOUR_COLLECTION_NAME").document();
UniqueID = key.getId();
现在您可以将此UniqueID 用作文档。