如何从 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】:

您可以使用queryStartingAtValuequeryEndingAtValue 查询以特定子字符串开头的字符串。

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 个字符

如何从 firebase 获取特定文档数据并以字符串形式返回

python_如何判断字符串a以某个字符串开头或结尾?

获取以某些字母开头的名称列表[关闭]