如何从 Firebase 获取名称以某个字符串开头的记录?
Posted
技术标签:
【中文标题】如何从 Firebase 获取名称以某个字符串开头的记录?【英文标题】:How to get records from Firebase that have names that start with a certain string? 【发布时间】:2017-03-03 00:23:24 【问题描述】:如何查询 Firebase 以返回名称以特定字符串开头的子级?
我正在尝试将此 autocomplete textfield project 与 Firebase 一起使用。
他们使用 NSURLSession 来获取以输入到文本字段中的字母开头的单词:
private func handleTextFieldInterfaces()
autocompleteTextfield.onTextChange = [weak self] text in
self?.fetchAutocomplete(text)
private func fetchAutocomplete(keyword:String)
dataTask = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: (data, response, error) -> Void in
if let data = data
do
let predictions = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
var locations = [String]()
for dict in predictions as! [NSDictionary]
locations.append(dict["description"] as! String)
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.autocompleteTextfield.autoCompleteStrings = locations
)
)
dataTask?.resume()
如何使用 Firebase 做到这一点?
我认为可以使用 isEqual 来查询完全匹配但是否有以查询开头?
ref = FIRDatabase.database().reference(withPath: "/locations")
exactLocations = ref.isEqual(keyword)
【问题讨论】:
你指的项目是this吗? 好的,谢谢。修复了我的链接。在他们的示例代码中,他们使用 nsurlsession 从谷歌地方获取数据。我想使用自己的 Firebase 数据。 【参考方案1】:您可以使用queryStartingAtValue
和queryEndingAtValue
查询以特定子字符串开头的字符串。
ref.queryStarting(atValue: "value")
.queryEnding(atValue: "value\\uf8ff")
请参阅Firebase documentation on sorting and filtering。
也推荐:
Firebase Database Search Query Firebase for SQL developers【讨论】:
啊哈,我错过了将其限制为值的 .queryEnding 部分。谢谢!以上是关于如何从 Firebase 获取名称以某个字符串开头的记录?的主要内容,如果未能解决你的问题,请参考以下文章
无效的字段名称“名称”。字段只能包含字母、数字和下划线,以字母或下划线开头,最多 128 个字符