如何在不关闭视图控制器的情况下一次在三个不同节点的 firebase 上写入数据
how to write data on firebase at three diffrent node at one without closing view controller
基本上,我正在使用 Database.database().reference().child(“users”).hasChild(“somename”)
检查 firebase 数据库中是否存在某些数据
如果它有那个名字那么我想写到 firebase 上的三个不同节点,即在接收方节点的发送方节点和另一个节点
我打电话给
Database.database().reference().child(“send).childbyautoid.servalue(somename: somevalue)
Database.database().reference().child(“receiver”).child(“receiverid”).childbyautoid.setvalue(somename: somevalue)
database.database.reference().child(“all”).childbyautoid.setvalue(somename: somevalue)
问题是我在关闭视图控制器之前这样做
所以要么我应该等待所有的火灾执行或控制器只在呼叫一次火灾后解雇
这是一个糟糕的设计我应该怎么做才能立即关闭控制器并在 firebase 的三个位置获取数据
您可以使用多位置更新一次执行多个写入。在您的代码中,它看起来像这样:
let rootRef = Database.database().reference()
let pushId = rootRef.childByAutoId().key
let updatedUserData = [
"send/\(pushId)/someName": someValue,
"receiver/\(pushId)/someName": someValue,
"receiver/\(all)/someName": someValue
]
// Do a deep-path update
rootRef.updateChildValues(updatedUserData, withCompletionBlock: { (error, ref) -> Void in
if (error) {
print("Error updating data: \(error.description)")
}
})
完成处理程序也是您在写入完成后放置需要 运行 的代码的地方。
另见:
基本上,我正在使用 Database.database().reference().child(“users”).hasChild(“somename”)
检查 firebase 数据库中是否存在某些数据
如果它有那个名字那么我想写到 firebase 上的三个不同节点,即在接收方节点的发送方节点和另一个节点
我打电话给
Database.database().reference().child(“send).childbyautoid.servalue(somename: somevalue)
Database.database().reference().child(“receiver”).child(“receiverid”).childbyautoid.setvalue(somename: somevalue)
database.database.reference().child(“all”).childbyautoid.setvalue(somename: somevalue)
问题是我在关闭视图控制器之前这样做 所以要么我应该等待所有的火灾执行或控制器只在呼叫一次火灾后解雇 这是一个糟糕的设计我应该怎么做才能立即关闭控制器并在 firebase 的三个位置获取数据
您可以使用多位置更新一次执行多个写入。在您的代码中,它看起来像这样:
let rootRef = Database.database().reference()
let pushId = rootRef.childByAutoId().key
let updatedUserData = [
"send/\(pushId)/someName": someValue,
"receiver/\(pushId)/someName": someValue,
"receiver/\(all)/someName": someValue
]
// Do a deep-path update
rootRef.updateChildValues(updatedUserData, withCompletionBlock: { (error, ref) -> Void in
if (error) {
print("Error updating data: \(error.description)")
}
})
完成处理程序也是您在写入完成后放置需要 运行 的代码的地方。
另见: