java - 是否可以在 android 中合并未知数量的 firestore 查询?

标签 java android firebase google-cloud-firestore

This答案涉及如何将两个查询合并在一起,我想这可以对任意数量的已知查询完成。但是,我有一个值数组,我想用它来过滤包含具有这些值的字段的文档(它是所有值的相同字段)。上面链接的方法似乎不足以达到此目的。

我尝试使用 new 运算符创建一个查询数组,但这不起作用,因为 Query 是私有(private)的。

Query query = db.collection("posts")
                .whereEqualTo("userId", followingList)//followingList is a list of Strings that I want to query
                .orderBy("imageUrl_1", Query.Direction.ASCENDING);

这不起作用,因为 followingList 不是 String

我如何尝试创建一个不起作用的查询数组:

ArrayList<Query> list = new ArrayList<Query>();
        for(String s : followingList){
            list.add(new Query());//does not compile
        }

enter image description here 我的 Firestore 的这张图片显示了 followingList 是如何创建的。当用户点击关注另一个用户的帖子时,它会更新。我想要做的是创建一个查询所有帖子(包含在一个单独的集合中),这些帖子包含 followingList

中包含的 userIs

最佳答案

我已经在我当前的项目中对此进行了测试,它工作正常(仅测试了两个具有 2 个元素的 followingList.size 的文档)

public void testMy() {
        db = FirebaseFirestore.getInstance();
        List<String> followingList = new ArrayList<>();
        followingList.add("tag1"); followingList.add("tag2"); followingList.add("tag3"); // ...
        List<Task> taskList = new ArrayList<>();

        for (String s : followingList) {
            Query query = db.collection("invites")
                    .whereEqualTo("uid", s)
                    .orderBy("imageUrl_1", Query.Direction.ASCENDING);; //followingList is a list of Strings that I want to query
            Task<QuerySnapshot> task = query.get();
            taskList.add(task);
        }

        Tasks.whenAllSuccess(taskList.toArray(new Task[taskList.size()])).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
            @Override
            public void onSuccess(List<Object> objects) {
                @SuppressWarnings("unchecked")
                List<QuerySnapshot> querySnapshots = (List<QuerySnapshot>)(List<?>) objects;
                for (QuerySnapshot qs : querySnapshots) {
                    for (QueryDocumentSnapshot qds : qs) {
                        Log.d(TAG, qds.getData().toString());
                    }
                }
            }
        });
    }

关于java - 是否可以在 android 中合并未知数量的 firestore 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56877715/

相关文章:

java - java中的getClass()方法是静态的吗?

java - GCS Hadoop 连接器错误 : ClassNotFoundException: com. google.api.client.http.HttpRequestInitializer ls:方案 gs 没有文件系统

java - 为什么文件在同一个包中却需要导入?

java - 实例化抽象类时发生了什么?什么是匿名内部类?

java - 在 registerNative 中注册 native Layer Call 失败

android - 如何使用 GridLayout 使表单标签适应 Android 上的方向

java - Firebase 远程配置无法在 OnComplete 中获取控制台值

firebase - 如何将图像 URL(来自 Firebase 存储)存储到 Firestore [Flutter]

javascript - Angular 和 Firebase 应用程序无法运行

java - 从 ListView 中选择项目并点击删除它 - Android 待办事项列表应用程序