У меня есть узел под названием «Рецепты», узел «Рецепты» содержит несколько рецептов.Для каждого рецепта у него есть некоторые общие данные (предписанный врач / дата назначения / ... и т. Д.), А также несколько узлов «Медицина».Для каждого лекарства у него есть данные (название лекарства, частота / ... и т. Д.)
Моя цель - получить каждое лекарство и его общие данные (назначенный врач / дата назначения / ... и т. Д.) И сохранить их.в отдельном узле.
Вот мой дизайн базы данных в Firebase: Дизайн базы данных для узла "Рецепты"
Вот мой код и то, что я пытался сделать:
refPrescription = Database.database().reference().child("users").child(userID!).child("Prescriptions");
//observing the data changes
refPrescription.observe(DataEventType.value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.prescriptionsList.removeAll()
//iterating through all the values
for prescriptions in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let prescribtionObject = prescriptions.value as? [String: AnyObject]
let physicionName = prescribtionObject?["Prescribed Physician"]
let prescriptionDate = prescribtionObject?["Prescription Date"]
let RX = prescribtionObject?["RX"]
let prescribtionId = prescriptions.key
//try to get medicines
self.refRefill = Database.database().reference().child("users").child(self.userID!).child("Prescriptions").child(prescribtionId);
//observing the data changes
self.refRefill.observe(DataEventType.value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.prescriptionsList.removeAll()
//iterating through all the values
for medicines in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let medicineObject = medicines.value as? [String: AnyObject]
let medDose = medicineObject?["Doze"]
let medFrequency = medicineObject?["Frequency"]
let medName = medicineObject?["Name"]
let medQuantity = medicineObject?["Quantity"]
let medRefill = medicineObject?["Refill"]
let medRefillDate = medicineObject?["nextRefillDate"]
self.refRefill = Database.database().reference().child("users").child(self.userID!).child("Refills")
let RefillID = self.refRefill.childByAutoId().key
let refill1 = ["Prescribed Physician": physicionName as Any, "Refill Date": medRefillDate as Any, "RX": RX as Any, "Prescription ID": prescribtionId as Any, "Dose": medDose as Any, "Frequency": medFrequency as Any, "Name": medName as Any, "Quantity": medQuantity as Any]
self.refRefill.child(RefillID!).setValue(refill1)
}
}
})
}
}
})
Я немного озадачен выводом, который я получил, узлы, которые я стремился получить, были прекрасно сохранены в моей базе данных.Однако я обнаружил, что 3 реплицированных узла содержат общие данные предписания, которые я получил из первого цикла (Предписанный врач / Дата назначения / ... и т. Д.). Вот моя база данных после выполнения моего кода
Итак, как я могу исправить свой код и не сохранять реплицированные узлы в моей базе данных.