Firestore DB - 以斜体显示的文档

Dav*_*ski 9 firebase-console google-cloud-firestore

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

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

有什么想法吗??戴夫

Fra*_*len 8

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

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

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


Jua*_*eto 8

这发生在两种情况下:

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

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

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

并且看起来如果您处于这些情况中的任何一种,您都无法列出“文档(1)”,这是一种非常奇怪的工作方式,因为它们不作为“文档”存在(这是它们以“斜体”标记的方式) ) 但它们“存在”作为对子集合的引用。


小智 8

在 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");
Run Code Online (Sandbox Code Playgroud)

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