簡體   English   中英

如何從 firestore 查詢中的合並任務中檢索數據?

[英]How to retrieve data from merge tasks in firestore query?

有人可以告訴我如何檢索所有三個任務嗎? 實際上,我只能檢索兩個任務。

CollectionReference players = db.collection("gamers");

    Task task1 = players.whereEqualTo("player_id_one", myId)
            .get();

    Task task2 = players.whereEqualTo("player_id_two", myId)
            .get();
Task task3 = players.whereEqualTo("player_id_three",myId).get();

    Task<List<QuerySnapshot>> allTasks = Tasks.whenAllSuccess(task1, task2,task3);
    allTasks.addOnSuccessListener(new OnSuccessListener<List<QuerySnapshot>>() {
        @Override
        public void onSuccess(List<QuerySnapshot> querySnapshots) {
            for (QuerySnapshot queryDocumentSnapshots : querySnapshots) {
                for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                    Modelgame players = documentSnapshot.toObject(Modelgame.class);
                    result.add(modelplayer);
                    adapter.notifyDataSetChanged();

                }
            }
        }
    });

當您使用Tasks#whenAllSuccess(Task...<?> tasks)方法時:

當所有指定的任務都成功完成時,返回一個任務,其中包含成功完成的任務結果列表。

這意味着您獲得的 List不是List<QuerySnapshot>而是List<Object>

allTasks.addOnSuccessListener(new OnSuccessListener<List<Object>>() {
    @Override
    public void onSuccess(List<Object> querySnapshots) {
        //Loop through the list only once
        for (Object object : querySnapshots) {
            Modelgame players = ((DocumentSnapshot) object).toObject(Modelgame.class);
            result.add(modelplayer);
            Log.d("TAG", players.getName());
        }
        adapter.notifyDataSetChanged(); //Added when the for loop ends.
    }
});

因此,一旦所有任務都成功完成,您只需循環一次結果並將 object 轉換為DocumentSnapshot object 並調用toObject()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM