swift firebase queryStartingAtValue



我是firebase的新手,我试图使用queryStartingAtValue搜索产品的标题.在我的firebase JSON和下面的代码中,我有几个层次需要跨越。它看起来像->/item/(部分名称:服装,游戏等)/autoID/(产品名称,价格)我能够一直使用for循环接收结果,直到找到特定的字符串,但它看起来不太好。我想知道是否queryStartingAtValue可以缩短遍历子元素的次数,或者至少如何正确使用queryStartingAtValue非常感谢你的帮助!!由于

迅速

Database.database().reference().child("item").queryStarting(atValue:"Adidas").observeSingleEvent(of: .value) { (snapshot) in

for snap in snapshot.children {
if let snap = snap as? DataSnapshot {
if let childItem = snap.value! as? [String: Any] {
for key in childItem {
if let item = key.value as? [String: Any] {
if let title = item["Title"] as? String {
if title.contains("adidas") {
print("found")
}
}
} 
}   
}
}
}
}

重火力点JSON
{
"item": {
"Clothing": {
"-NFrGoNiI4zX-QBgEwkf": {
"Price": 345,
"Title": "Adidas",
"availableQty": "100"
}
},
"Games": {
"-NFrGdmdV4FOBI34EnOW": {
"Price": 199,
"Title": "Overwatch Platinum Pack",
"availableQty": "100"
},
"-NGL4vk1GC80ojMgZNik": {
"Price": 66,
"Title": "Overwatch 2",
"availableQty": "100"
}
}
}
}

Firebase实时数据库查询由两步组成:

  1. 首先按键、值或子属性对子节点排序。
  2. 然后使用startAt/endAt/startAfter/endAfter/equalTo对该数据进行切片。

您的代码包含#2,但它不包含任何排序指令,这意味着数据库根据节点的键对节点进行排序。

您将需要在Title子属性上包含一个指令来订购:

Database.database().reference()
.child("item")
.queryOrdered(byChild: "Title") // 👈
.queryStarting(atValue:"Adidas")
.observeSingleEvent(of: .value) { (snapshot) in

如果你需要一个强大的搜索引擎为firebase- commerce-app,你可以使用Algolia

  1. 采取免费计划到algolia

  2. Algolia与firebase云功能(非常容易!)文章算法与云函数

  3. Algolia with swiftalgolia-swift

相关内容

  • 没有找到相关文章

最新更新