首页 > 解决方案 > 特定用户信息的 Firebase 查询不起作用。我该如何解决这个问题?

问题描述

我编写了一个 firebase 查询,用于搜索用户的级别,然后更改视图控制器上的级别标签。但是,此查询为我的 Firebase 数据库中的第一个用户提供了级别,而不是当前用户的级别。我该如何解决这个问题?

@IBOutlet weak var levelLabel: UILabel!

var refUser:DatabaseReference?

override func viewDidLoad() {
    super.viewDidLoad()
    refUser = Database.database().reference().child("userInfo");

    let userID = Auth.auth().currentUser!.uid
    let query = refUser?.queryOrdered(byChild: "userId").queryEqual(toValue: "\(userID)")
    query?.observeSingleEvent(of: .value, with: { snapshot in
        for child in snapshot.children {
            let childSnap = child as! DataSnapshot
            var dict = childSnap.value as! [String: Any]
            let level=dict["level"] as! String
            self.levelLabel.text=level
        }
    })

}

Firebase 数据库的照片

在此处输入图像描述

标签: iosswiftfirebasefirebase-realtime-database

解决方案


尝试这样的方式:

query?.observeSingleEvent(of: .value, with: { snapshot in
    guard let values = snapshot.value as? [String: Any], 
      let level = values["level"] as? String else {
      return
    }

    DispatchQueue.main.async {
      self.levelLabel.text = level
    }
})

推荐阅读