我想使用queryStarting在firebase中进行搜索
我有一个baseStruct:
products
Jakets
red
name: red
categoryName: Jakets
Pants
blue
name: blue
categoryName: Pants
...
我尝试了
let strSearch = "re"
Database.database().reference().child("products").queryOrdered(byChild: "name")
.queryStarting(atValue: strSearch)
.queryEnding(atValue: strSearch + "\u{f8ff}")
.observeSingleEvent(of: .value, with: { (snapshot) in
print("snapshot= \(snapshot)")
})
在firebase中,我添加了规则:
{
"rules": {
".read": true,
".write": true,
"products": {
"$someID": {
".indexOn": ["name"]
}
}
}
}
但这给了我
snapshot =捕捉(产品)为空
如何更改代码以按名称搜索?
答案 0 :(得分:0)
Firebase实时数据库查询功能在节点的列表上。您在某个位置执行查询,并返回该位置的直接子节点,这些子节点在已知路径上具有特定值。
例如,您可以执行以下操作来退回所有名称以re
开头的夹克:
Database.database().reference().child("products/Jakets").queryOrdered(byChild: "name")
.queryStarting(atValue: "re")
.queryEnding(atValue: "re\u{f8ff}")
.observeSingleEvent(of: .value, with: { (snapshot) in
...
})
但是您不能使用当前结构执行返回名称以re
开头的夹克和裤子的查询。如果需要的话,您将必须:
有关此的更多信息,请参见: