私は、到着日と空港が一致した場合にのみ、飛行データが返される場所でデータを取得しようとしています。私はこれのための最良の解決策を理解しているように見えることはできません。私は、空港または到着日のどちらかが同じであるデータのみを取り出すことができます(両方ともではなく、equalTo()を1回しか使用できません)。ここに私の現在のJavaコードは次のようになります。質問のFirebase multiple WHERE句
Firebase ref = mFirebaseRef.child(FirebaseReference.CHILD_FLIGHTS);
Query queryRef = ref.orderByChild("airport").equalTo(getAirport());
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(TAG + " datasnapshot is equal to " + dataSnapshot);
}
ここではデータそのものです:
{
"flight" : {
"1ddf3c02-1f2e-4eb7-93d8-3d8d4f9e3da2" : {
"airport" : "Gothenburg, Sweden - Landvetter (GOT)",
"arrivalDate" : "2016-06-21",
"arrivalTime" : "20:58",
"code" : "GOT",
"departureDate" : "2016-06-23",
"departureTime" : "20:58"
},
"c2c86e54-b4d0-4d83-934b-775a86f0a16c" : {
"airport" : "Gothenburg, Sweden - Landvetter (GOT)",
"arrivalDate" : "2016-06-21",
"arrivalTime" : "20:50",
"code" : "GOT",
"departureDate" : "2016-06-23",
"departureTime" : "20:50"
}
},
"users" : {
"1ddf3c02-1f2e-4eb7-93d8-3d8d4f9e3da2" : {
"age" : "25",
"createdTime" : "1466533088358",
"email" : "[email protected]",
"provider" : "password",
"sex" : "M",
"username" : "user2"
},
"c2c86e54-b4d0-4d83-934b-775a86f0a16c" : {
"age" : "25",
"createdTime" : "1466374588255",
"email" : "[email protected]",
"provider" : "password",
"sex" : "M",
"username" : "user1"
}
}
}
現在のJavaコードはのみが同じ空港を持つすべての子を返します。クライアント側でソートする必要があるデータ量が上記のテストデータよりもはるかに大きい場合は、これは実現できません。ファイアベースの終わりのデータをより良くフィルタリングするにはどうすればいいですか?
あなたはこれがhttps://github.com/davideast/であることを意味します。アンドロイドではクエリベースは不可能ですか?ちょうど確認したい!私はfirebaseすぐに願っています –
ではなく、周りにこのような作業の複数のwhere句を書くための方法で構築組み込まれています。 –