Ios 如何使用swift从firebase中的JSON文件获取电子邮件id
我想这样问:如果我给电子邮件,那么我必须获得ID。目前我可以获取电子邮件或ID,但我需要以下示例的解决方案 比如说 1) 如果我给出Ios 如何使用swift从firebase中的JSON文件获取电子邮件id,ios,json,swift,firebase,firebase-realtime-database,Ios,Json,Swift,Firebase,Firebase Realtime Database,我想这样问:如果我给电子邮件,那么我必须获得ID。目前我可以获取电子邮件或ID,但我需要以下示例的解决方案 比如说 1) 如果我给出sandeep@gmail.com然后我需要它的ID为123 如何在swift中实现这一点 这是我的JSON文件: { "ID": 123, "Membership": 1234, "title": "Mr.", "firstname": "kumar", "lastname": "sandeep", "email": "sand
sandeep@gmail.com
然后我需要它的ID为123
如何在swift中实现这一点
这是我的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!)")
}
})
通常,您应该使用用户的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
很抱歉,我的问题可能重复了。例1)如果我给sandeep@gmail.com那我需要它的ID是123。如何在swift中实现这一点?这是Firebase中的基本查询。请看我的答案,并特别阅读排序和过滤数据部分。嗨,杰伊,我尝试了这段代码,但它没有打印任何东西。请帮忙。@sandepkumat我复制并粘贴了一个工作项目中的代码。确保您的Firebase结构与答案中的匹配。原始问题中没有包含JSON结构的完整片段,因此我必须假设一个结构。嗨,Jay,我只是根据JSON结构添加了JSON图像和代码。请验证我的代码。非常感谢。@sandepkumat这可能是让userRef=ref.child(“1”)的问题,但是如果没有父节点,json结构仍然不完整。