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
}
我的 Firestore 的这张图片显示了 followingList
是如何创建的。当用户点击关注另一个用户的帖子时,它会更新。我想要做的是创建一个查询所有帖子(包含在一个单独的集合中),这些帖子包含 followingList
最佳答案
我已经在我当前的项目中对此进行了测试,它工作正常(仅测试了两个具有 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/