【问题标题】:Firestore generated unique ids for more then 1 collectionFirestore 为 1 个以上的集合生成了唯一 ID
【发布时间】:2019-04-06 17:33:06
【问题描述】:

在我目前正在处理的项目中,需要将文档从一个集合放置到另一个集合。

这是通过从一个集合中删除一个文档并将其保存到另一个集合中来完成的(使用相同的 ID)。

我面临的问题是关于生成 ID 的唯一性。

问题1:

即使删除了具有该 ID 的文档,Firestore 能否生成曾经在该集合中出现过的 ID?

想象以下集合:

collectionY[
 1: {},
 2: {}
 ...
]

我们删除 id 为 1 的文档并将其保存在另一个集合中。 collectionY 会再次为任何新文档生成 id 1 吗?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    collectionY 是否会再次为任何新文档生成 id 1?

    在这种情况下,id 的冲突极不可能发生,您可以/应该假设它们将是完全唯一的。这就是他们的设计目的。所以你不必担心它。

    当您在不传递任何参数的情况下调用 CollectionReference 的 add() 方法或 CollectionReference 的 document() 方法时,此内置的唯一 ID 生成器会在 Firestore 中使用,它会生成随机且高度不可预测的 ID,从而防止命中后端的某些热点基础设施。

    【讨论】:

    • 但是否有可能再次生成相同的 ID?我真的找不到有关如何从 Firebase 端生成 ID 的信息。我虽然使用 dateTime,但在这种情况下,无论如何它们总是独一无二的
    • "但是是否有可能再次生成相同的 ID?"答案是不。仅当使用属于不同产品的 Firebase 实时数据库 SDK 的 push() 方法时,才会包含时间组件。几周前我读到 Firebase 公开了生成文档 ID 的算法,以确保用户的 ID 唯一性。所以不用担心 Firestore 文档 ID 冲突。
    • @AlexMamo 你有链接到生成文档ID的算法发布的地方吗?
    • @markvgti 看看here,这是一个更新的资源。如果您认为我的回答/评论对您有用,请考虑投票(▲)。我会很感激的。谢谢!
    • 这是我自己的问题@AlexMamo :-)... 不过还是谢谢。我仍然对您的评论投了赞成票,以感谢您抽出时间来回答。
    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多