[英]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.