Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud firestore Firestore DB-以斜体显示的文档_Google Cloud Firestore_Firebase Console - Fatal编程技术网

Google cloud firestore Firestore DB-以斜体显示的文档

Google cloud firestore Firestore DB-以斜体显示的文档,google-cloud-firestore,firebase-console,Google Cloud Firestore,Firebase Console,有人能给我解释一下吗。我正在使用github中firestore的节点firestore备份还原主备份脚本。让它工作了,但它只读取我收藏的文档列表中的一个文档。它读取的是普通文本,其余的是斜体,斜体的消息表示它们不存在,不会出现在查询中 它们确实存在,并且在我从IOS应用程序(而不是Node.js备份脚本)进行查询时显示相关文档和字段 有什么想法吗?? Dave如果您使用子文档创建文档,然后从SDK中删除顶级文档,则删除不是递归的。因此,尽管顶级文档已经消失,但其子文档仍然存在 这些文档的文档I

有人能给我解释一下吗。我正在使用github中firestore的节点firestore备份还原主备份脚本。让它工作了,但它只读取我收藏的文档列表中的一个文档。它读取的是普通文本,其余的是斜体,斜体的消息表示它们不存在,不会出现在查询中

它们确实存在,并且在我从IOS应用程序(而不是Node.js备份脚本)进行查询时显示相关文档和字段

有什么想法吗??
Dave

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

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


由于不再有文档,文档本身将不会显示在查询结果中。如果您需要在查询结果中查找此文档,则需要创建一个空文档作为解决方法。

这在两种情况下发生:

  • 如果删除包含子集合的文档

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

    • 第一步。创建:/collection/文档(1)
    • 第二步。创建:/collection/document(1)/collection/document(2)

  • 看起来,如果你在这些情况下,你不能列出“文档(1)”,这是一种非常奇怪的工作方式,因为它们不是以“文档”的形式存在的(这是它们以“斜体”标记的方式),而是作为子集合的引用“存在”。

    在firestore中,文档以斜体显示是因为

  • 删除集合或带有子集合的文档,子文档
  • 将集合和文档添加到空文档
  • 斜体文档不会显示在你的应用程序中,它无法获取,唯一的方法是直接指定文档的确切路径和名称

    解决方案:

    不要只向空文档添加一个集合,而是在添加集合之前在该文档中添加一个空字段

    在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");
    
    Map dummymmap=newhashmap();
    DocumentReference df=db.集合(“col1”).文档(“doc1”);
    df.set(dummyMap);//添加空字段,不会在控制台中显示
    收藏(“您的收藏名称”);
    

    dummyMap和您的收藏在同一文档“doc1”中。

    您是否可以添加任何建议来处理这种情况?如何以编程方式获取这些文档(使用cronjob删除或重新分配它们)?任何想法都是有用的。是的,我面对了这个问题,并通过递归批量删除操作解决了它。。(在更深层次上,您可以将此递归批删除操作移动到firebase云函数,以便它在云上运行,而您的前端应用程序不会受到任何影响)我不认为有一个API可以获取“所有只包含子集合的文档引用”。相反,我建议使用相反的方法:在删除子集合的“包含”文档时删除所有子集合。了解第2点将集合和文档添加到空文档将产生此结果,这非常有帮助。谢谢