我应该如何正确地将数据上传到Firebase

时间:2019-07-25 08:24:01

标签: swift firebase firebase-realtime-database

我无法将数据正确上传到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"

0 个答案:

没有答案