gpt4 book ai didi

json - 触发查询以返回单个子项并更新值

转载 作者:行者123 更新时间:2023-11-30 11:54:03 25 4
gpt4 key购买 nike

我有一个使用 .queryEqual 查询 Firebase 的函数,以获取我想要更新的节点,但我不知道如何将该值设置为 false。这是我的功能:

func addrShipDefault() {
let ref = Router.addrShip.reference().child(self.userId)
let query = ref.queryOrdered(byChild: "isDefault").queryEqual(toValue: true)
query.setValue(false, "isDefault")
}

有人可以告诉我如何在 Firebase 中查询我正在查找的节点并更新其值吗?

我已经使用 ref.updateChildValues 完成了其他更新,但对于那些我知道确切路径的更新。这次我需要查找 isDefault 设置为 true 的节点并修改它。

希望这是有道理的!!

感谢您的帮助

**** 更新以显示数据库结构

{
"addr_01" : {
"address1" : "63 Park Ave",
"address2" : "Unit #2",
"city" : "Greenland",
"firstName" : "John",
"id" : "addr_01",
"isDefault" : true,
"lastName" : "Smith",
"state" : "MA",
"zipcode" : "01890"
},
"addr_02" : {
"address1" : "101 Lafayette Rd",
"address2" : "",
"city" : "Rye",
"firstName" : "Say It In 3D",
"id" : "addr_02",
"isDefault" : false,
"lastName" : "",
"state" : "NH",
"zipcode" : "03870"
}
}

最佳答案

来自官方文档here

you can update a child without rewriting the entire object. If you want to allow users to update their profiles you could update the username as follows:

self.ref.child("users/(user.uid)/username").setValue(username)

现在在您的案例中使用上面的示例:

我们可以做这样的事情:(我还没有尝试过,但我想你能明白)

let ref = Router.addrShip.reference().child(self.userId)
let query = ref.queryOrdered(byChild: "isDefault").queryEqual(toValue: true)

//query.child("isDefault").setValue(false)

//Updated Code

query.observeSingleEvent(of: .childAdded) { (snapshot) in
let newRef = snapshot.ref.child("isDefault")
newRef.setValue(false, withCompletionBlock: { (err, ref) in
print("SetValue")
})
}

请注意,来自官方文档here

setValue方法的函数签名如下:

func setValue(_ value: Any?)    

如上所示,它接受任何类型值的可选值,这意味着您可以为有效的 json 传递任何值。

另请注意,还有一个带有完成 block 的方法

func setValue(_ value: Any?, withCompletionBlock block: @escaping (Error?, DatabaseReference) -> Void)

关于json - 触发查询以返回单个子项并更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48030644/

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