我无法将数据正确上传到Firebase,只能上传部分数据。似乎是异步问题。但是我不知道如何解决它。感谢您的帮助
func getId(path:String, value:String?, completion: @escaping (String?) -> Void) {
let ref = Database.database().reference(withPath: path).queryOrdered(byChild: "name").queryEqual(toValue: value)
ref.observeSingleEvent(of: .childAdded, with: { snapshot in
DispatchQueue.main.async() {
completion(snapshot.key)
}
print("running")
}) { (error) in
print(error.localizedDescription)
}
}
@objc func onClikced(){
self.getId(path: "patients", value: BookingViewController.selectedPatientNameLabel.text) { snapshotKey in
BookingViewController.kardexDict["patient"] = snapshotKey as AnyObject?
}
self.getId(path: "nurses", value: BookingTreatmentListController.nurseName) { snapshotKey in
BookingViewController.kardexDict["nurse"] = snapshotKey as AnyObject?
}
_ = Database.database().reference().child("kardexes").child(BookingViewController.newKardex.id).updateChildValues(BookingViewController.kardexDict)
let ref = Database.database().reference().child("kardexes").child(BookingViewController.newKardex.id)
ref.observeSingleEvent(of: .childAdded, with: { (snapshot) in
for treatment in self.treatments
{
BookingTreatmentContainerViewController.treatmentId =
Database.database().reference().child("kardexes").child(BookingViewController.newKardex.id).child(Treatment.nodeName).childByAutoId().key
var treatmentData = FirebaseDataType()
treatmentData["name"] = treatment.name
treatmentData["product"] = treatment.product
self.kardex?.databaseRef.child(Treatment.nodeName).child(BookingTreatmentContainerViewController.treatmentId!).setValue(treatmentData) { (error, ref) in
if let error = error {
Log.debug(" >>> error \(error.localizedDescription)")
}
}
}
我希望数据库可以如下:
kardexes
|
-LkcSD2KJLwbCj8KAdsd
|-patient:"-Lkc5MFKJLwbC123Ambo"
|-nurse:"-LjdosFKJLwbCj8KAmbo"
|-treatments
|-"-Lkc5MFEGsfbCj8KAmbo"
|-name:"abc"
|-product:"efg"
|-"-Lk5sKCKJLwbCj8KAofj"
|-name:"123"
|-product:"456"
但是我只能成功上传患者和护士数据,而不能上传治疗数据。看起来如下
kardexes
|
-LkcSD2KJLwbCj8KAdsd
|-patient:"-Lkc5MFKJLwbC123Ambo"
|-nurse:"-LjdosFKJLwbCj8KAmbo"