Firestore - 将文档添加到子集合时集合的幻影重复

时间:2021-04-05 15:09:59

标签: firebase google-cloud-firestore

我在一个网络项目中使用了 firestore。我尝试在页面中添加文档“Organisation/Ligue-ujYYEFE9lAPt6DrehBDG/Company”和“Organisation/Ligue-ujYYEFE9lAPt6DrehBDG/Promise”(子集合“Company”和“Promise”已经有一个文档)。添加文档后,它在另一个具有相同id的集合中显示为斜体

用于设置文档的代码非常标准:

firebase
        .firestore()
        .collection("Organisation")
        .doc(organisationId)
        .collection("Company")
        .doc(companyData.companyId)
        .set(companyData)

主要收藏: Main collection

创建的斜体集合: Italic collection

1 个答案:

答案 0 :(得分:2)

查看您的 Firebase 控制台屏幕截图,很可能是因为以斜体显示的 Organisation 文档的 ID 前面有一个额外的空格。

我们如何做出这个假设?

首先,我们在控制台中看到两次 ID Ligue-ujYYEFE9lAPt6DrehBDG,一次是斜体,一次是非斜体。

对于斜体的 ID,这意味着该文档仅作为一个或多个子集合的“容器”存在,而不是“真正的”文档(它不存在,它是一种“幽灵”)。在此answer中查看更多信息。

另一方面,非斜体的 ID 对应于您问题的屏幕截图中显示的文档(字段被黑色矩形隐藏的文档)。 此文档确实存在

因此,由于在给定的集合中不能有两个具有相同 ID 的文档,因此我们可以得出结论,真正的文档和“幽灵”没有相同的 ID...甚至如果我们在控制台中看到它是相同的...

第二次,我记得我的一个 answer 证明,如果 Firestore 文档在其 ID 的开头有一个额外的空格,Firestore 控制台不会在以下情况下显示这个额外的空格将其显示在集合中。

=> 结论:很可能在以斜体显示的 Organisation 文档的 ID 前面有一个额外的空格。