Firebase 数据库 runTransaction 在具有大量数据的节点
发布时间:2022-08-17 07:30:16 230
相关标签: # 数据库# json# 数据
Firebase实时数据库要在根节点上运行事务操作?(或任何具有大量数据的父节点。)
Long-ish版本:让我们根据Firebase文档中推荐的数据库结构来做一个示例:
{
"users": {
// users indexed by their unique id
"alovelace": {
"name": "Ada Lovelace",
"groups": {
"techpioneers": true,
"womentechmakers": true
}
},
... // other users
},
"groups": {
// groups indexed by their unique id
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
... // other groups
}
}
假设我想用runTransaction()将用户添加到组中。唯一常见的共享节点是根节点,因此我需要执行以下操作:
runTransaction(ref(database, '/'), (value) => {
// do something with the data
})
要做到这一点,我需要对根节点具有读取权限,这很好。就像在中一样,这可能不再能够从客户端实现,但您可以依赖云函数或自定义BE。
然而,这似乎远不是推荐的做法,因为此操作需要下载整个数据库(如果您不是在根节点上运行事务,而是在具有大量数据的某个父节点上运行事务,则甚至需要下载其中的很大一部分)。
那么,我错过了什么?看起来要么我误解了runTransaction()的工作原理以及它为什么需要读取访问,要么它在现实场景中是一种非常不实用的方法(同时考虑到Firebase提供的关于如何构造NoSQL数据库的最佳实践)。
有人能帮我理解吗?谢谢
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报