我正在尝试使用firebase查询进行关键字搜索,但它们似乎没有检索到正确的值。它始终是数据库的第一个孩子。数据库由autoid使用child组织。我的数据看起来像这样
posts :
-KJj6DMQVcaOIBZ76X03
category:
"cleaner"
dishname:
"Lysol"
likes
8QCQPfShSTdYe1VbCxHK4dkJPFj1:
true
likesCount:
1
picURL:
"https://firebasestorage.googleapis.com/v0/b/dis..."
poster:
"8QCQPfShSTdYe1VbCxHK4dkJPFj1"
price:
"$5"
restaurant:
"house"
-KJj6PaHt9EfXQ5-EU-m
-KJnTUcb3BvZDMI0Pxgo
-KJnTl4giuy5QMvdeEo5
正在进行搜索的功能如下所示
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
filteredPosts.removeAll()
let postref = firebase.child("posts")
let search = searchController.searchBar.text!
print(search)
let postQ = (postref.queryOrderedByKey().queryEndingAtValue(search))
// postQ.keepSynced(true)
postQ.observeSingleEventOfType(.ChildAdded, withBlock: { (snapshot) in
self.filteredPosts.append(snapshot)
print(snapshot)
self.shouldShowSearchResults = 2
self.tableView.reloadData()
})
searchController.searchBar.resignFirstResponder()
}
令人非常沮丧。请帮忙
答案 0 :(得分:1)
您按键排序,postref.queryOrderedByKey()
,然后按该键的值queryEndingAtValue(search)
进行查询。
因此,除非您的search
变量属于childByAutoId
值之一(-KJnTUcb3BvZDMI0Pxgo
),否则我认为您不会得到您想要的内容。
而是根据您要搜索的子资源进行排序。我们假设您想要通过帖子category
进行搜索。
var search = "cleaner"
let categoryQuery = postref
.queryOrderedByChild("category")
.queryEndingAtValue(search)
这将取消-KJj6DMQVcaOIBZ76X03
。