我想通過使用orderByChild
進行查詢並使用這些子項的鍵進行篩選。在這種情況下,我的鍵和值都是用於查詢我想要的數據。如何使用startAt(double value,String key)和endAt(double value,String key)Android中的Firebase實時數據庫
我的問題是當鑰匙包含數字,如果鑰匙只有字母,則沒有問題。因爲我直接從火焰閱讀器讀取another answer中的建議,所以我試圖始終保持數字上的字母。
我的JSON是:
{
"my_list":{
"100xyz":{
"value1": 100,
"value2": 100,
"name":"100xyz"
},
"200xyz":{
"value1": 200,
"value2": 200,
"name":"200xyz"
},
"300xyz":{
"value1": 300,
"value2": 300,
"name":"300xyz"
},
"400xyz":{
"value1": 400,
"value2": 400,
"name":"400xyz"
},
"500xyz":{
"value1": 500,
"value2": 500,
"name":"500xyz"
}
}
}
我的代碼是:
DatabaseReference root = FirebaseDatabase.getInstance().getReference().getRoot();
DatabaseReference list = root.child("my_list");
list.orderByChild("value2").startAt(100, "100xyz").endAt(500, "200xyz").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
SomeModel someModel = dataSnapshot.getValue(SomeModel.class);
Log.d("SOME_MODEL", someModel.getName());
}
});
的問題是,我可以看到4個孩子的控制檯:
D/SOME_MODEL: 100xyz
D/SOME_MODEL: 200xyz
D/SOME_MODEL: 300xyz
D/SOME_MODEL: 400xyz
但我只應看過2
D/SOME_MODEL: 100xyz
D/SOME_MODEL: 200xyz
我想強調一下:只要鍵沒有數字,它確實有效。
如何通過orderByChild和鍵同時按鍵有數字來過濾?
因爲我很可能是您談論的問題中回答的Firebaser(當您提到另一個問題時,總是會欣賞鏈接),所以我很樂意提供幫助。您是否可以通過單個相應的代碼示例將問題簡化爲單個JSON,以重現問題? –
@FrankvanPuffelen對不起,跳過鏈接,我試圖從昨天開始解決這個問題,現在有點累了。我已經應用了您建議的版本。請讓我知道是否還有其他事情可以改善我的問題。 – cutiko
爲什麼你不使用'startAt(String value,String key)'?你認爲「雙重」價值是什麼意思? –