簡體   English   中英

Firebase Firestore fetch or Query with different field android

[英]Firebase Firestore fetch Or Query with different field android

如何獲取不同字段的文檔值? 例如,我有一個帶有 Message 的數據庫,我將所有聊天數據存儲在這個集合中。現在我想獲取兩個用戶之間的所有聊天數據,按時間戳排序。
據我從這里知道,firebase 也引入in運算符,但它是針對單個字段的
Firestore 快照
在此處輸入圖像描述

代碼片段

db.collection("Message")
                .whereEqualTo("from",mAuth.getCurrentUser().getUid()) //to is receiver UID
                .whereEqualTo("to",to)
                 ||    // Or "I need or in between" 
                .whereEqualTo("to",mAuth.getCurrentUser().getUid())
                .whereEqualTo("from",to)
                .orderBy("time_stamp", Query.Direction.ASCENDING).... 

簡而言之,我需要在兩個字段條件之間或兩者之間獲取數據庫。
預期 output
從firestore中獲取登錄用戶和接收者之間的所有文檔。(獲取來自已登錄和接收者ID或來自接收者和登錄用戶的數據)。

我是初學者,請幫助我解決此問題,否則任何解決方法都可以。 謝謝

首先獲取所有具有"from"==mAuth.getCurrentUser().getUid的文檔,然后過濾掉具有"to"==to的文檔。 這是代碼:

db.collection("Message")
                .whereEqualTo("from",mAuth.getCurrentUser().getUid)
                .orderBy("time_stamp", Query.Direction.ASCENDING)
                .get()
                .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        List<DocumentSnapshot> allDocs = queryDocumentSnapshots.getDocuments();
                        List<DocumentSnapshot> requiredList = new ArrayList<>();
                        for(DocumentSnapshot d : allDocs){
                            if(/*Cast into required type.I'm assuming string*/((String)d.get("to")).equalsIgnoreCase(to)){
                                requiredList.add(d);
                            }
                        }
                        // requiredList contains the required documents
                        // do whatever you want here...
                    }
                });

如有必要,索引數據庫。 您可以檢查任何所需索引的日志。

暫無
暫無

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

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