代码之家  ›  专栏  ›  技术社区  ›  Ssubrat Rrudra

无法获取具有自定义文档ID的Firestore文档

  •  0
  • Ssubrat Rrudra  · 技术社区  · 5 年前

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

    enter image description here

    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();
    
                }
            }
        });
    

    enter image description here 以下是task.getResult().getDocuments().size()返回的日志 0个 它应该会回来 因为我收藏了三份文件。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Frank van Puffelen    5 年前

    文件 可以 实际上在消防站是空的,意思是 可能有一个没有数据的文档,您的代码会加载它。

    不过,在这种情况下,在你的截图中你可以看到 1-4-2019 文档名称显示在 斜体字 2019年4月1日

    简而言之:

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

        2
  •  0
  •   Ssubrat Rrudra    5 年前

    问题解决了。如果firestore文档中没有任何字段,那么collectionreferenceget()方法将跳过这些文档。

    enter image description here