如何从集合中检索所有文档ID?

时间:2020-07-05 12:28:21

标签: java firebase google-cloud-firestore

我正在尝试获取集合groups中的所有文档ID。文档ID是唯一的组名。此外,groups中的每个文档没有字段,只有指向其他集合的指针。我编写了以下代码:

fireDB.collection("groups").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            QuerySnapshot querySnapshots = task.getResult();
            if (querySnapshots != null) {
                for (QueryDocumentSnapshot currentDocumentSnapshot : querySnapshots) {
                    groups.add(currentDocumentSnapshot.getId());
                }
                Collections.sort(groups);
                ArrayAdapter<String> adapter = new ArrayAdapter<>(SignUpActivity.this,android.R.layout.simple_list_item_1,groups);
                groupNameText.setAdapter(adapter);
            } else {
                Log.d(this.getClass().getName(), "No groups in the database");
            }
        } else {
            Log.d(this.getClass().getName(), "addOnCompleteListener:failed");
        }
    }
});

但是groups始终为空,因为firebase不会给我没有字段的文档(经过一些调试后将其显示出来)。我该怎么办?

1 个答案:

答案 0 :(得分:2)

听起来您在文档路径下有一些子集合,而在该路径下没有文档。这是一种有效的情况,但是我认为不可能在客户端SDK中获得这些位置,因为那里没有文档。

请参见https://www.reddit.com/r/Firebase/comments/b0poug/empty_virtual_docs_this_document_does_not_exist/

Firebase控制台以斜体显示这些位置,因为它需要显示每个位置下的子集合。它可能为此使用了REST API或Admin SDK中的show_missing标志。