Firestore:集合中的ID是唯一的还是全局的?

Arc*_*rco 20 firebase google-cloud-firestore

对于我的数据库结构,我需要知道Firebase Cloud Firestore中自动生成的标识符在集合或整个数据库中是唯一的.

怎么做?

Fra*_*len 38

通过add()在Firestore中调用生成的密钥与您调用的集合无关add().相反,它们是随机标识符,在统计上保证是唯一的.对于Firestore(和Firebase实时数据库),这些密钥是在客户端生成的.

如果您有兴趣,请查看Firestore JavaScript SDK如何实现逻辑:

  1. add 电话 doc()

  2. doc 电话 AutoId.newId()

  3. AutoId.newId() 生成客户端ID

其逻辑与Firebase实时数据库生成推送ID的方式类似.主要区别似乎是Firestore的自动生成的密钥不是基于本地时间戳,因此它们不能有意义地用于订购集合中的文档.

  • @FrankvanPuffelen 我发现很有趣,SDK 依赖于`Math.random`,它只是伪随机。这是否意味着在实践中,即使它们不是完全随机的,在客户端(通常)生成随机 ID 就足够了。我在想,如果它可以在 Firebase 规模上运行,那么它对于我自己的应用程序来说必须足够好。我想知道 Firebase 团队是否也测试了加密安全的随机数生成,并认为它太慢或不值得。 (5认同)
  • 阅读 newId() 代码后,我对 id 的唯一性产生了一些疑问。它似乎从 20 个随机挑选的字符创建一个字符串。如何保证它的唯一性? (2认同)
  • 正确,这是极不可能的,但不能保证。与UUID和GUID相同(2 ^ 122个组合)。 (2认同)