我想通过用户名在Firebase中搜索

时间:2018-08-18 11:41:09

标签: iphone swift xcode firebase firebase-realtime-database

我在检索节点中存在的数据时遇到问题

Dev-> Regis-> [userId(“ hjgsfgsdfghd8ydfsw3r”)]-> UserInfo-> {userName:“”,电子邮件:“”}

我正在尝试以下查询

 ref.child(kChild).child(kRegistration).queryOrdered(byChild: kUserInfo).queryEqual(toValue: searchText).observeSingleEvent(of: .value) { (snapshot) in 
       if snapshot.exists() {    
            }
        }

我也尝试制定规则,但确实可以产生结果

"Development": {
    "Registration": {
      "$user_id": {
            "UserInfo": {
                    ".indexOn": ["userName"],
                ".read": "auth.uid == $user_id"
                    }
            }
     }
  }

数据库结构

see the structure

和ref表示Database.refrence()

请帮助您解决此问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

假设searchText是您要获取对象的用户名值。 Firebase需要一个orderBy调用。

let searchText = //username you wish to fetch
let ref = db.ref('Development/Registration/${userId}/userInfo')
ref.orderByChild('userName').equalTo(searchText).once("value", function(snapshot) {
    if(snapshot.exists()){
       //whatever you want to do here
    }
}