Firebase搜索数据关键字

时间:2017-03-05 12:32:29

标签: ios swift firebase firebase-realtime-database

我有这样的Firebase实体:

firebase entity

这个功能向我展示了我的所有数据:

    func getRecipes(text: String, completion: @escaping (Recipe) -> Void)
    {
    let databaseRef = FIRDatabase.database().reference()
    databaseRef.child("Recipes").queryOrdered(byChild: text).observe(.childAdded, with: { snapshot in
      if let value = snapshot.value as? [String : AnyObject] {
        let recipe = Recipe(dictionary: value)
        completion(recipe)
      }
    }) { (error) in
            print(error.localizedDescription)
    }

我只需要显示数据,其名称为“text”(即“Beer”或“Pie”)。

1 个答案:

答案 0 :(得分:1)

queryOrdered(byChild: text)中,(byChild'代表您要搜索的子节点(属性),在本例中为'title'。然后您要指定要搜索的内容。可以使用queryEqual(toValue: text)

来完成此操作

因此databaseRef.child("Recipes").queryOrdered(byChild: text)将成为databaseRef.child("Recipes").queryOrdered(byChild: "title").queryEqual(toValue: text)

但是,这不适用于您的情况,因为您正在搜索某个子字符串而不是匹配的字符串,这与SQL中的LIKE操作相当。 Firebase目前不允许这样做。唯一可能的相似之处是搜索以某个子字符串开头的字符串。

如果您尝试过滤特定类别,最好添加“类别”节点并搜索特定值。或者,如果您尝试实现搜索功能,则可能必须使用搜索API。我听过很多Elasticsearch但从未使用它,所以你应该做一些研究。