gpt4 book ai didi

ios - 使用 iOS Swift 在 Firebase 中进行高级查询和过滤

转载 作者:行者123 更新时间:2023-11-28 06:36:11 24 4
gpt4 key购买 nike

我正在使用 Firebase 数据库构建票务应用。这是我的数据库格式: enter image description here

如果我这样写代码:

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;
}

它将显示所有值为“17/08/2016”的“tanggal”,当我这样做时...

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”。我总是做不到这一点,错误主要是“多个 orderBy()”,我需要根据两个或多个子值查询和过滤数据。基本上我想根据“harga”排序,根据“tanggal”、“asal”、“tujuan”和“tersedia”的最小数量进行过滤请帮助我,我想将我的数据库从 SQL 切换到 Firebase。谢谢。

最佳答案

目前无法在 Firebase 中通过多个子键进行查询。我会建议两种可能的解决方案:

第一个解决方案:扁平化数据库结构。

解释:实现一个像这样的结构,而不只是一个包含所有子项的“jadwal”部分:

jadwal: {
"17/08/2016": {
harga:
},
"17/07/2016": {
harga:
}
}

然后,您可以根据要过滤的“tanggal”选择路径,然后按“harga”值对子项进行排序。

第二种解决方案:在客户端做一些过滤

说明:您是否使用 orderBy("harga") 在 jadwal 中查询,然后在客户端的 childAdded 监听器上过滤结果。这意味着您将检查 child 是否有预期的 tanggal。如果是,则将其添加到结果数组。否则,转到下一个 child 。

如果您还有其他问题,请告诉我。

关于ios - 使用 iOS Swift 在 Firebase 中进行高级查询和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com