Firebase Databaseを使用してチケットを発行するアプリケーションを構築しています。iOS Swiftを使用したFirebaseでの高度なクエリとフィルタリング
let ref = FIRDatabase.database().reference()
ref.child("jadwal")
.queryOrderedByChild("tanggal")
.queryEqualToValue("17/08/2016")
.observeEventType(.ChildAdded, withBlock: { (snapshot) in
print(snapshot)
}, withCancelBlock: nil)
出力は次のようになります:
Snap (-KPMQefHSuk7j9kb3GTJ) {
asal = BNA;
harga = 177000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 35;
tujuan = BRN;
}
Snap (-KPMQnCGrXY36NEMxSOU) {
asal = BNA;
harga = 150000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 37;
tujuan = MDN;
}
Snap (-KPMQqFmku_XzItElzjV) {
asal = BNA;
harga = 160000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 40;
tujuan = MDN;
}
が、それは同じ値を持つすべての「tanggal」と表示されます私はこのようなコードを書く場合
:ここに私のデータベース形式です「17/08/2016」、 にすると...
let ref = FIRDatabase.database().reference()
ref.child("jadwal")
.queryOrderedByChild("harga")
.observeEventType(.ChildAdded, withBlock: { (snapshot) in
print(snapshot)
}, withCancelBlock: nil)
それが表示されますすべての「harga」このようにローからハイに命じ:ソートされ
Snap (-KPNgVeXXnqnzevh5w6u) {
asal = BNA;
harga = 120000;
idBus = id;
jam = "22:30";
tanggal = "30/08/2016";
tersedia = 38;
tujuan = TKG;
}
Snap (-KPMQnCGrXY36NEMxSOU) {
asal = BNA;
harga = 150000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 37;
tujuan = MDN;
}
Snap (-KPMQqFmku_XzItElzjV) {
asal = BNA;
harga = 160000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 40;
tujuan = MDN;
}
Snap (-KPMQefHSuk7j9kb3GTJ) {
asal = BNA;
harga = 177000;
idBus = id;
jam = "20:00";
tanggal = "17/08/2016";
tersedia = 35;
tujuan = BRN;
}
Snap (-KPNgJPRlEuu0FZvjU2J) {
asal = BNA;
harga = 180000;
idBus = id;
jam = "21:30";
tanggal = "25/08/2016";
tersedia = 40;
tujuan = MDN;
}
Snap (-KPNgQ2qQXQpY4eT2Jqd) {
asal = BNA;
harga = 230000;
idBus = id;
jam = "22:30";
tanggal = "30/08/2016";
tersedia = 38;
tujuan = BNJ;
}
は「harga」 ソートされていることがわかりますが、私は「harga」を示すスナップショットの一覧を表示する必要があり、 「tanggal」は「17/08/2016」のみです。 私はいつも "multiple orderBy()"を使ってこのエラーやエラーに失敗しました。私は2つ以上の子値に基づいてデータをクエリしてフィルタリングする必要があります。基本的には、 "harga"に基づいてソートし、 "tanggal"、 "asal"、 "tujuan"、および "tersedia"の最小数に基づいてフィルタリングしたい。 SQLをFirebaseに切り替える手助けをしてください。ありがとうございました。
Firebaseクエリでは、1つの 'orderBy'句しか指定できません。場合によっては、1つのプロパティでフィルタリング/オーダーする値を組み合わせることもできますが、それは正確なユースケースに依存します。 http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –