Swift 替换Firebase中的多个值
是否有一种方法可以根据特定条件快速替换firebase快照中的值。例如,我希望将所有“username”替换为值“xyz”,其中userId=userId_0001(userId不是唯一的)。这是我目前的代码:Swift 替换Firebase中的多个值,swift,firebase,firebase-realtime-database,firebase-authentication,Swift,Firebase,Firebase Realtime Database,Firebase Authentication,是否有一种方法可以根据特定条件快速替换firebase快照中的值。例如,我希望将所有“username”替换为值“xyz”,其中userId=userId_0001(userId不是唯一的)。这是我目前的代码: let databaseRef = Database.database().reference().child("usernames").queryOrdered(byChild: "userId").queryEqual(toValue: &qu
let databaseRef = Database.database().reference().child("usernames").queryOrdered(byChild: "userId").queryEqual(toValue: "userId_0001")
databaseRef.observe(.value, with: { (snapshot) in
for childSnapshot in snapshot.children {
let username = value?["username"] as? String ?? ""
username.setValue("xyz")
})
}
问题中的代码存在一些问题,代码中的查询值(
userId\u 0001
)与屏幕截图中的值不匹配(userId\u 001
)
根据我收集的信息,您希望查询firebase中用户ID为userId_001
(与您的屏幕截图匹配)的节点,并且对于这些节点,将现有的username
值替换为xyz
下面是实现这一点的代码
func replacer() {
let databaseRef = Database.database().reference().child("usernames").queryOrdered(byChild: "userId").queryEqual(toValue: "userId_0001")
databaseRef.observe(.value, with: { snapshot in
let childSnaps = snapshot.children.allObjects as! [DataSnapshot]
for snap in childSnaps {
snap.ref.child("username").setValue("xyz")
-- or --
snap.ref.updateChildValues(["username": "xyz"])
}
})
}
I在for循环中包括两个选项。只使用一个。updateChildValues的好处在于,如果需要,您可以一次替换父节点中的多个值。我乍一看,这段代码很好。运行时有什么问题?是用户ID的输入错误吗?此图显示了
userId\u 001
,您的代码引用了userId\u 0001
。该代码存在许多问题。就目前而言,它既不会编译也不会运行,我不确定这应该做什么<代码>值?[“用户名”]作为?字符串???。即使已编译,userName也将是一个字符串,因此userName.setValue(“xyz”)
将无法工作。我想你是想在Firebase中设置这个值?如果是,请查看《入门指南》。你能包括你尝试过的实际代码吗?