这是我第一次在firebase数据库中构建数据。
我明白我应该优化阅读操作,并进行非规范化。
我有一个项目列表和一个用户列表。此外,每个用户都有一个与之关联的项目列表。
我可以轻松阅读和显示数据。但是,如果我必须编辑特定项目的名称,我就不知道如何正确地执行此操作。
拥有该项目的密钥我可以使用projects/key/name
进行更新,但我还必须更新与每个用户关联的项目中的名称。我尝试使用users/*/key
但没有发生任何事情。
我在基本的Web应用程序中使用firebase和javascript。
最初,true
节点内的所有项目都有users
值(而不是名称)。使用这种方法,我只需要在projects
节点进行更新,但我必须执行多次读取操作。
提前致谢。
答案 0 :(得分:1)
您需要两个索引:
为用户查找项目(您已经拥有此项目)
查找项目的用户
我将两个查找列表存储为顶级列表:
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