我试图火力点内更新子值。 用户首先会创建一个新的订单,它会创建两个节点,一个在主要订单部分,另一个在用户下面,以保持清洁记录。这似乎工作,但我努力更新值
然后,当他在窗体上,并进行更新,我希望firebase在firebase上同时更新。我如何访问该特定的密钥,因为当我尝试使用观察方法时,似乎没有任何工作适用于我。
什么是最好的方式来访问表单所在的关键并更新值?
我试图火力点内更新子值。 用户首先会创建一个新的订单,它会创建两个节点,一个在主要订单部分,另一个在用户下面,以保持清洁记录。这似乎工作,但我努力更新值
然后,当他在窗体上,并进行更新,我希望firebase在firebase上同时更新。我如何访问该特定的密钥,因为当我尝试使用观察方法时,似乎没有任何工作适用于我。
什么是最好的方式来访问表单所在的关键并更新值?
这是如何在火力地堡更新值:
func updateDatabaseForEdits() {
let updates : [AnyHashable: Any] = ["variableName": value,
"variableName2": value]
ref.child("COrders").child("specificKeyYouWantToEdit").updateChildValues(updates, withCompletionBlock: { (error, success) in
if error != nil {
// upload failed
return
}
else {
// upload worked
// update your locally stored values
}
})
}
还有其他问题与您应用程式虽然。具体来说,你如何存储数据。您如何期望知道访问哪个密钥?我建议您更新您的数据存储是这样的:
desikhanapeena {
COrder {
key123 {
orderInformation
}
}
UserOrders {
uid {
key123
orderInformation
}
}
}
让我知道,如果你有问题:如果你想从一个快照可以是这样做的关键
:
for child in snap.children {
let child = child as? DataSnapshot
if let key = child?.key {
// print(key)
}
}
如果你愿意,你在上传之前,你可以做,像这样拿到钥匙:
let key = ref.child("COrders").childByAutoId().key
万一你还在寻找答案。
问题1的答案。 你需要更新用户的订单价值,如果它成功,那么从那里取得父键(在你的情况下,它的自动识别码),并使用这个键,在“Corders”中更新。 这里是习题#2的代码
func updateBothValue(){
let value = ["key":"data","key1": "data2"]
REF.child("Users").child(UID).child("UserCorder").childByAutoId().setValue(value){
error, ref in
guard error == nil else { return }
let key = ref.key
REF.child("Coorders").child(key).setvalue(value)
}
}
,因为你写的“访问密钥的形式是”。对于每个表单数据,存储您在前面步骤中从Firebase获得的关键字。并使用此密钥进行更新。
嗨,伙伴,感谢您的回复,让我今天实施这个并回来给你。你可以让我知道如何访问“孩子(”specificKeyYouWantToEdit“)”部分,因为这是我正在努力挑选关键时,我在VC接受订单。再次感谢您的洞察力。 –
当你上传这个let key = ref.child(“COrders”)。childByAutoId()。key时,你可以得到密钥,问题在于你的数据是如何存储的。如果您有用户,您希望能够直接获得所有订单或至少部分订单。在用户的uid下使用autoid存储订单,然后获取部分或全部这些密钥。当你循环一个快照时,你可以得到这样的关键:对于snap.children中的孩子{child} = child作为? DataSnapshot if let key = child?.key { // do something } } – DoesData
Thanks mate!这将帮助堆......非常感谢你 –