【问题标题】:Firestore documents with custom document IDs are not getting fetched未获取具有自定义文档 ID 的 Firestore 文档
【发布时间】:2019-03-09 12:31:34
【问题描述】:

这是带有自定义文档 ID 的 Firestore 集合,这些文档 ID 实际上是日期字符串。这种自定义 id 的目的是获取特定日期的文档。

代码如下:

FirebaseFirestore.getInstance().collection("Users")
                    .document(FirebaseAuth.getInstance().getUid())
                    .collection("Bookings By Date")
                    .get().addOnCompleteListener(new 

OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "onComplete: called");
                        Log.d(TAG, "onComplete: task result = " + task.getResult());
                        Log.d(TAG, "onComplete: task.getResult().getDocuments().size() = " + task.getResult().getDocuments().size());
                        QuerySnapshot queryDocumentSnapshots = task.getResult();

            }
        }
    });

这是 logcatlogs,其中 task.getResult().getDocuments().size() 返回 0 它应该返回 3 因为我在集合中有 3 个文档。

【问题讨论】:

    标签: android google-cloud-firestore


    【解决方案1】:

    文档可以在 Firestore 中实际上是空的,这意味着 可能有一个没有数据的文档,并且您的代码会加载它。

    然而,在这种情况下,在您的屏幕截图中,您可以看到1-4-2019 文档名称以斜体 显示,这意味着该文档不存在。控制台仅在列表中显示此名称,因为该路径下有子集合。并且由于文档1-4-2019不存在,所以加载所有文档时不会返回。

    简而言之:

    • 文档可以为空,这意味着您可以拥有没有任何数据字段的文档。
    • 当您读取集合中的所有文档时,将返回所有文档(包括空文档)
    • 如果路径下存在不存在文档的子集合,Firestore 控制台将以斜体显​​示该不存在文档的标题。
    • 当您读取集合中的所有文档时,返回不存在的文档。

    另见:

    【讨论】:

    • 好吧,我什至无法以编程方式设置文档字段。对于这个我可以通过引用其自定义文档 ID 来检索特定文档的子集合的特定任务,我不得不使用老式 Firebase。
    • 您问题中的代码没有显示任何关于写作的内容。我回答了你原来的问题,解释了为什么当你从集合中读取文件时你得到 0 个文件。此外,我试图解释为什么您的修复可能会起作用,Firestore 可以读取空文档。
    【解决方案2】:

    问题已解决。如果 firestore 文档中没有任何字段,则 CollectionReferece#get() 方法会跳过这些文档。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2019-08-15
      • 2018-09-03
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2021-12-25
      相关资源
      最近更新 更多