orderByChild
を使用してクエリを実行し、その子のキーでフィルタしたいと思います。この場合、私のキーと値はどちらも私が望むものを照会するためのデータです。startAt(double value、String key)とendAt(double value、String key)の使い方
私の問題は、キーに数字が含まれているときに表示されます。キーに文字のみがある場合、問題はありません。私は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)'を使用していませんか?あなたは「ダブル」の価値が何を意味すると思いますか? –