返回

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数据库的最佳实践)。

有人能帮我理解吗?谢谢

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像