如何从firebase中检索数据(Swift)

时间:2017-11-07 19:59:04

标签: swift firebase firebase-realtime-database

我是初学者,我想使用swift作为我的编程语言。

用户可以添加注册用户并相互转账,因此当用户输入照片编号和电子邮件时,应用程序可以检查输入的号码是否已在firebase系统中注册

任何简单的方法来搜索用户是否存在,非常感谢

这是数据库的结构

enter image description here

var ref: DatabaseReference!
var tref: DatabaseReference!

var handle : DatabaseHandle!

var usersArray = [NSDictionary?]()
var filteredUsers = [NSDictionary?]()
var user : NSDictionary?

override func viewDidLoad() {
    super.viewDidLoad()
    self.picker.isHidden = true
    tref = Database.database().reference()
    ref = Database.database().reference()
    self.handle = self.ref?.child("users").child((Auth.auth().currentUser?.uid)!).child("contact").observe(.childAdded, with: { (snapshot) in
        if let item = snapshot.value as? String {
            self.pickerdata.append(item)
            self.picker.reloadAllComponents()
        }
    })
    self.picker.delegate = self
    self.picker.dataSource = self

    tref.child("users").queryOrdered(byChild: "phone").observe(.childAdded, with: {(snapshot) in
        self.usersArray.append(snapshot.value as? NSDictionary)
    })
    print(usersArray.count)

}

 @IBAction func ContactChange(_ sender: UITextField) {
    filteredContent(searchText: contactText.text!)
    print(filteredUsers.count)
    print(usersArray.count)
    print("ARRAY")

}

func filteredContent(searchText: String){
    self.filteredUsers = self.usersArray.filter{ user in
        let username = user!["phone"] as? String
        return (username?.lowercased().contains(searchText.lowercased()))!
    }
}

func findUsers(text: String){
    self.handle = ref.child("users").queryOrdered(byChild: "phone").queryStarting(atValue: contactText.text!).queryEnding(atValue: contactText.text!+"\u{f8ff}").observe(.value, with: { snapshot in
        if let item = snapshot.value as? String {
            self.contact.append(item)
        } else{
            print("error")
        }
    })
}

上面的代码不起作用。非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

问题有点不清楚,但我认为OP所要求的是:

  

如何通过电话号码查看用户是否存在?

如果这就是问题,可以通过查询该节点的子节点来检索节点。例如,让我们在用户节点上创建一个查询,以查找包含名称的子项:Kam通过电话查询

let usersRef = firebaseRef.child("users")
let query = usersRef.queryOrdered(byChild: "phone").queryEqual(toValue: "2330504")
query.observeSingleEvent(of: .value) { (snapshot) in
    if snapshot.exists() {
        //need to iterate in case we find more than one match
        for child in snapshot.children {
            let snap = child as! DataSnapshot
            let dict = snap.value as! [String: Any]
            let name = dict["name"] as! String
            print("found \(name)")
        }

    } else {
        print("not found")
    }
}

运行此代码时,将打印

found Kam

假设电话号码是2330504