Firestore DB - 以斜体显示的文档

时间:2018-01-07 13:28:31

标签: google-cloud-firestore firebase-console

有人可以向我解释一下。我正在使用github上的firestore的node-firestore-backup-restore-master备份脚本。有它工作,但它只读取我在集合中的文档列表中的一个文档。它读取的是普通文本,其余部分用斜体显示,斜体字的消息表示它们不存在且不会出现在查询中。

它们确实存在以及我从IOS应用程序查询而不是从Node.js备份脚本查询时出现的相关文档和字段。

有什么想法? 戴夫

3 个答案:

答案 0 :(得分:7)

如果使用子文档创建文档,然后从SDK中删除顶级文档,则删除不是递归的。因此,当顶级文档消失时,其子文档仍然存在。

这些文档的ID在UI中显示为斜体ID:这些文档实际上并不存在,但我们会显示它们,以便您可以导航到子集合。

由于没有文档,文档本身不会显示在查询结果中。

答案 1 :(得分:7)

在Firestore中,文档因其以斜体显示,

  1. 删除集合或带有子集合的文档,子文档。
  2. 将集合和文档添加到空文档中。

斜体文档未显示在您的应用中,无法获取,唯一的方法是直接指定文档的确切路径和名称。

解决方案:

与其在空文档中仅添加一个集合,不如在添加文档之前在该文档中添加一个空字段。

在android中,我向该字段添加了一个空的哈希映射。但不会显示在数据库中 这是我的示例代码:

Map<String ,Object> dummyMap= new HashMap<>();
DocumentReference df=db.collection("col1").document("doc1");
df.set(dummyMap);  // add empty field, wont shown in console
df.collection("your collection name");

dummyMap和您的集合位于同一文档“ doc1”中。

答案 2 :(得分:6)

在两种情况下会发生这种情况:

  1. 如果您删除带有子集合的文档

  2. 如果您直接创建“ / collection / document(1)/ collection / document(2)”之类的内容,而不是分两步创建它:

    • 步骤1.创建:/ collection / document(1)
    • 步骤2。创建:/ collection / document(1)/ collection / document(2)

如果您在上述任何一种情况下,都无法列出“ document(1)”,这是一种非常奇怪的工作方式,因为它们不以“ documents”形式存在(这是将它们标记为“斜体”),但它们“存在”作为对子集合的引用。