【问题标题】:In Firebase, how to update a child of all nodes from the previous level?在 Firebase 中,如何从上一级更新所有节点的子节点?
【发布时间】:2017-08-26 09:37:35
【问题描述】:

这是我第一次在 firebase 数据库中构建数据。

我知道我应该针对读取操作进行优化,并进行非规范化。

我有一个项目列表和一个用户列表。此外,每个用户都有一个与之关联的项目列表。

读取和显示数据没有问题。但是,如果我必须编辑特定项目的名称,我不知道如何正确操作。

拥有该项目的密钥后,我可以使用projects/key/name 进行更新,但我还必须更新与每个用户关联的项目中的名称。我尝试使用users/*/key,但没有任何反应。

我在一个基本的 Web 应用程序中使用带有 javascript 的 firebase。

最初,users 节点内的所有项目都有一个 true 值(而不是名称)。使用这种方法我只需要在projects 节点中进行更新,但我必须执行多次读取操作。

提前致谢。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database nosql


    【解决方案1】:

    为此,您需要两个索引:

    1. 为用户查找项目(您已经有了)

    2. 为项目查找用户

    我会将两个查找列表存储为顶级列表:

    users
      $uid
        admin: true
    projects
      $projectid
        name: "Name of project"
        description: "Description of project"
    userProjects
      $uid
        $projectid: "Name of project"
    projectUsers
      $projectid
        $uid: true
    

    使用这种结构,您可以查找所需的所有内容,而无需进行昂贵的查询。

    当您更新项目名称时,您只需加载项目的用户,然后对其进行迭代。如果您觉得花哨,您甚至可以使用多位置update() 一口气更新它们。有关更多信息,请参阅此博客文章:https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多