【问题标题】:How to fetch email id from JSON file in firebase using swift如何使用swift从firebase中的JSON文件中获取电子邮件ID
【发布时间】:2017-07-05 22:33:14
【问题描述】:

JSON Image我想查询:如果我给了电子邮件,那么我必须得到ID。目前我可以获取电子邮件或 ID,但我需要以下示例的解决方案。

例如 1)如果我给sandeep@gmail.com,那么我需要它的ID为123

我怎样才能快速做到这一点?

这是我的JSON 文件:

{
   "ID": 123,
   "Membership": 1234,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "sandeep@gmail.com",
   "membrshipstatus": "Active",
   "volunteer": "Yes",
   "creationDate": "2016-12-27 "
 },

{
   "ID": 452,
   "Membership": 4531,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "harry@gmail.com",
   "membrshipstatus": "Active",
   "volunteer": "Yes",
   "creationDate": "2016-11-17 "
 },

这是我的Swift 代码:

    import UIKit
    import Firebase
    import FirebaseAuth

    class ViewController: UIViewController {

        @IBOutlet weak var emailofUser: UITextField!
        @IBOutlet weak var passwordofUser: UITextField!
        var ref:FIRDatabaseReference! //created a variable ref of type firebase database reference
        var databaseHandle:FIRDatabaseHandle? //to handle to database listener like to stop or start it


        var postdata = [String]?()
        var postall = [[String:String]]()


        override func viewDidLoad() {
            super.viewDidLoad()

            //set firebase reference
            ref = FIRDatabase.database().reference()

ref.child("1").child("email").observeEventType(.Value, withBlock: { snapshot in

            let emailid = snapshot.value as? String

            print(emailid)
        })

ref.child("1").child("ID").observeEventType(.Value, withBlock: { snapshot1 in

            let userID = snapshot1.value as? Int

            print(userID)
        })

            ref.queryOrderedByValue().observeEventType(.ChildAdded, withBlock: { snapshot2 in
                if let parentname = snapshot2.value as? Int {
                    print("The \(snapshot2.key) dinosaur's score is \(parentname)")
                }
            })
        }
    }

与此 JSON 图像相关的 Swift 代码:

override func viewDidLoad() {
        super.viewDidLoad()



            //set firebase reference
        ref = FIRDatabase.database().reference()

        let userRef = ref.child("1")

        //let queryRef = userRef.queryOrderedByChild("email").queryEqualToValue("mr.stefankirsch@gmx.com")


        userRef.queryOrderedByChild("email").queryEqualToValue("mr.stefankirsch@gmx.com").observeEventType(.Value, withBlock: { snapshot in

            for child in snapshot.children{

            let snap = child as! FIRDataSnapshot

                let userDict = snap.value as! [String:Any]

                let userId = userDict["ID"]
                let lastname = userDict["lastname"]
                print("\(userId!)  \(lastname!)")


            }
                    })

【问题讨论】:

  • 对不起,我的问题不同。例如 1)如果我给 sandeep@gmail.com 那么我需要它的 ID 为 123。我怎样才能在 swift 中实现这一点?
  • 这是 Firebase 中的基本查询。请查看我的回答并阅读Working with Lists,尤其是排序和过滤数据部分。

标签: ios json swift firebase firebase-realtime-database


【解决方案1】:

一般来说,您应该使用用户的 uid 将数据存储在用户节点中。假设您的用户节点被称为 /users... 像这样

users
  uid_0
   "ID": 123,
   "Membership": 1234,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep",
   "email": "sandeep@gmail.com"
  uid_1
   "ID": 452,
   "Membership": 4531,
   "title": "Mr.",
   "firstname": "kumar",
   "lastname": "sandeep"
   "email": "harry@gmail.com"

这是获取您要询问的数据的查询

let usersRef = ref.child("users")
let queryRef = usersRef.queryOrdered(byChild: "email")
                       .queryEqual(toValue: "sandeep@gmail.com")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in

     for child in snapshot.children {
          let snap = child as! FIRDataSnapshot
          let userDict = snap.value as! [String: Any]
          let userId = userDict["ID"]
          let lastname = userDict["lastname"]
          print("\(userId!)  \(lastname!)")
      }
})

然后打印结果:

123  sandeep

【讨论】:

  • 嗨杰,我试过这段代码,但它没有打印任何东西。请帮忙。
  • @SandeepKumat 我从一个工作项目中复制并粘贴了该代码。确保您的 Firebase 结构与答案中的内容相匹配。您没有在原始问题中包含完整的 JSON 结构的 sn-p,因此我不得不假设一个结构。
  • 嗨 Jay,我刚刚根据该 JSON 结构添加了 JSON 图像和代码。请验证我的代码。非常感谢。
  • @SandeepKumat 这可能是问题 let userRef = ref.child("1") 但是没有父节点,json 结构仍然不完整。
猜你喜欢
  • 2019-06-25
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2023-02-07
  • 1970-01-01
  • 2019-05-06
相关资源
最近更新 更多