获取集合中的所有文档以及文档的路径

我想获取集合中的所有文档以及相应的文档路径。我可以使用类似的方法来获取所有文档路径:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> list = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                list.add(document.getPath());
            }
            Log.d(TAG, list.toString());
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

但是,在此之后,我必须进行n(集合中文档的数量)读取才能读取这些文档,这比一次读取将它们作为集合读取要花费更多。

评论
已注销
已注销
但是,在此之后,我必须进行n(集合中文档的数量)读取才能获取这些文档,这比一次读取将它们作为集合获取要花费更多。

为了创建文档路径列表,您创建“ n”个请求。要实际获取所有相应文档的内容,请根据新创建的列表执行另一个“ n”请求。为什么要这么做?如果您需要将文档及其路径一起获取,为什么不通过一个请求就可以获取它们呢?因此,请检查以下方法:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> paths = new ArrayList<>();
            List<ModelClass> documents = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                paths.add(document.getPath());
                documents.add(document.toObject(ModelClass.class));
            }

            //Do what you need to do with the lists
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

否则,那将浪费文档读取的时间。

点赞
评论