![](/img/trans.png)
[英]How to observe a value change in a sub child node in firebase database in swift?
[英]How can I observe Firebase child value changes in multiple nodes in Swift?
我的Firebase数据库中有一个“用户”节点。 其中的每个用户都有一个带有uid的根。 每个用户的属性之一是“坐标”。 我想为所有用户观察这些坐标中的任何变化。 我几乎需要这样的东西:
usersDatabaseReference.child("*").child("coordinates").observe(.value, with: { (snapshot) in
我的结构如下所示:
用户
abcdefghijklmnop
坐标:“ 12.345,12.345”
其他道具
qrstuvwxyz
坐标:“ 34.567,34.567”
其他道具
因此,我正在寻找坐标值更改的所有用户的全局通知。
我是否需要遍历userDatabaseReference中的所有子项并为每个子项设置观察者? 然后,无论何时添加或删除用户,都重新设置一次?
您可以看到为什么我要使用通配符。 我应该如何处理?
您可以只观察整个用户结构,然后使用快照确定坐标是否为已更改的元素
usersDatabaseReference.child("users").observe(.childChanged, with: { (snapshot) in
//Determine if coordinate has changed
})
您还可以做的是:
func observeChildAdded(){
usersDatabaseReference.child("users").observe(.childAdded, with: { (snapshot) in
//Get the id of the new user added
let id = "123"
self.usersDatabaseReference.child("users").child(id).observe(.childChanged, with: { (snapshot) in
self.foundSnapshot(snapshot)
})
})
}
func foundSnapshot(_ snapshot: DataSnapshot){
let idChanged = snapshot.key
//Process new coordinates
}
这样,每当您添加一个新子项时,它都会自动为其设置观察者,但是它们都被推到了发现的同一函数中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.