gpt4 book ai didi

swift - 如何上传具有多个自动ID的新多个节点

转载 作者:行者123 更新时间:2023-11-30 10:39:10 24 4
gpt4 key购买 nike

我尝试使用 for 循环更新具有多个自动 ID 的多个节点。然而它总是失败。我看不到数据库上有任何更新。还有其他方法可以实现吗?

let ref = Database.database().reference().child("kardexes").child(newKardex.id)
ref.observeSingleEvent(of: .childAdded, with: { (snapshot) in
if (snapshot.exists()){
for treatment in self.treatments {
self.treatmentId = ref.child("treatments").childByAutoId().key

var treatmentData = FirebaseDataType()

treatmentData["name"] = treatment.name

ref.child("treatments").child(self.treatmentId!).setValue(treatmentData){ (error, ref) in
if let error = error {
Log.debug(" >>> error \(error.localizedDescription)")
}
}

}
} else{
print("snapshot doesnt exist")
}
})

我期望得到以下结果,但没有任何更新

kardexes
|
-LkcSD2KJLwbCj8KAdsd
|-treatments
|-"-Lkc5MFEGsfbCj8KAmbo"
|-name:"abc"
|-"-Lk5sKCKJLwbCj8KAofj"
|-name:"def"
|-"-Lk5sKFOELwbCj8KAjgu"
|-name:"ijk"

最佳答案

这个问题有点不清楚,但我认为您是在问如何创建“kardexes”节点,使其看起来像您问题中呈现的结构。

如果是这样,这是执行此操作的代码

func createKardexesNode() {
let treatmentArray = ["abc", "def", "ghi"]
let ref = self.ref.child("kardexes").child("-LkcSD2KJLwbCj8KAdsd").child("treatments")
for treatment in treatmentArray {
let childRefToAdd = ref.childByAutoId()
childRefToAdd.child("name").setValue(treatment)
}
}

运行此代码会在 Firebase 中生成一个如下所示的节点

{
"kardexes" : {
"-LkcSD2KJLwbCj8KAdsd" : {
"treatments" : {
"-Ll2dsJivnsH9QRM6MfV" : {
"name" : "abc"
},
"-Ll2dsJivnsH9QRM6MfW" : {
"name" : "def"
},
"-Ll2dsJivnsH9QRM6MfX" : {
"name" : "ghi"
}
}
}
}
}

请注意,self.ref 是一个类变量,它指向我的 Firebase 的根引用。替换你自己的。

关于swift - 如何上传具有多个自动ID的新多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com