【问题标题】:Firestore Random IDFirestore 随机 ID
【发布时间】:2021-04-12 04:00:15
【问题描述】:
我需要创建一个 Firestore 文档,并在下一步中使用它的 documentID。这一切都很好,但我希望应用离线工作,所以我无法离线创建文档并查询它的 ID。
我认为我可以将 docID 设置为创建文档的 DateTime 对象。这样它就不会被意外地重新创建和覆盖(因为他们需要得到正确的毫秒数)。
这样我可以创建文档,并在下一步中使用它的 id 创建更多文档。当我连接到互联网时,一切都会与 Firebase 同步。
有什么我遗漏的,或者这个系统会失败的任何原因吗?
【问题讨论】:
标签:
firebase
flutter
google-cloud-firestore
【解决方案1】:
这并不能确保您将拥有 uniqueId,因为其他用户在同一时刻创建文档的可能性很小,但确实存在。
要创建 uniqueid,您可以改用 Uuid 库
【解决方案2】:
返回DocumentReference的doc()方法不需要客户端在线:它总是在前端本地执行而不联系后端(您会注意到因此它不是异步)。
因此,您可以很好地依赖它来生成唯一的 Firestore 文档 ID:在没有任何路径的情况下调用它并使用您获得的 DocumentReference 的 id 属性。即使这是在离线设备上完成的,您也可以确保 Firestore 文档 ID 是唯一的。
SO answer 中有关 Firestore 文档 ID 的更多详细信息。