【问题标题】:Search for data in firebase Database在 firebase 数据库中搜索数据
【发布时间】:2018-05-06 16:35:29
【问题描述】:

所以我试图查看当前用户 ID 是否存在于数据库中并想要返回一个布尔值,返回数据是“任何”值,用户常量是一个字符串。我收到“如果”“类型值'Any?'的错误没有成员“包含””

let user = Auth.auth().currentUser?.uid
let databaseRef = Database.database().reference()
databaseRef
    .child("Posts")
    .queryOrdered(byChild: "uid")
    .observeSingleEvent(of: .value, with: { (snapshot) in               
        print (snapshot.value)
        let returnData = snapshot.value
        if returnData.contains(user!) {
            print ("uid exists")
        }
    })

我从数据库中取回这个值

"-LBe5petr8MUtVZd9qWw" = {
        uid = zQRxvM3cwzQMewUtVamk8JQrEFJ3;
    };
})

【问题讨论】:

  • 正确的查询是databaseRef .child("Posts").queryOrdered(byChild: "uid").queryEqual(toValue: "yourUserId"),只需检查完成块中的if snapshot.exists()
  • 这确实是正确的方法@TheTiger。您能否将其写在答案中,以便我们对其进行投票,并且 OP 可以接受它?
  • 谢谢@Frank!我已将其发布为答案。

标签: swift firebase firebase-realtime-database


【解决方案1】:

正确的查询是

databaseRef.child("Posts").queryOrdered(byChild: "uid").queryEqual(toValue: "yourUserId")

只需检查完成块中的if snapshot.exists()

【讨论】:

    【解决方案2】:

    如果您获取快照,则 uid 必须存在。您可以声明一个Boolean,如果数据返回,它将更新。如果你想要uid,你需要像这样解析它:

    var userDoesExist: Bool = false

        .observeSingleEvent(of: .value, with: { (snapshot) in               
            if let dict = snapshot.value as? [String : Any] {
                let userId = dict["uid"] as? String ?? ""
                print("Found uid: \(userId)")
                self.userDoesExist = true
            }
        })
    

    【讨论】:

      【解决方案3】:

      只需搜索 Posts/User/uid,如果快照为空则用户不存在

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2021-11-01
        • 1970-01-01
        • 2020-08-25
        • 2017-04-25
        相关资源
        最近更新 更多