【发布时间】:2019-05-12 04:50:27
【问题描述】:
我有一些以这种方式构建的 firebase 数据。这真的很简单,但我不知道是否有更简单的方法来构建它以有效地添加和删除团队成员。
在这种情况下,有属于团队的用户和拥有用户的团队。很基本的东西。
users:{
user1:{
name: "username",
profilePicUrl: "https://...",
teams:{
team1:true
}
},
user2:{
...
}
}
teams:{
team1:{
name:"SuperTeam",
members:{
user1: true,
user2: true,
....
}
}
}
我将提出两个问题。一个要求一个团队的所有成员,另一个要求一个成员的所有团队。
在界面中,我有一个多重选择,用户可以在其中选择团队成员。该人将选择/取消选择多个用户并按下保存按钮。
当用户按下保存时,会发生以下事情。
我删除了 teams 表的所有成员并设置了新成员 基于所选选项。
我将团队添加到选定的用户 "user/:userId/teams/:teamId" 设置 => true
但是从用户表中删除一个团队呢?我想不出一个有效的方法来做到这一点。我提出的解决方案如下。
- 使用多个更新设置团队更新所有用户 null 或 true 取决于选择。这可能适用于小 集,但对于大量用户来说似乎效率不高。
删除用户表中的“团队”数组并获取团队 每个用户通过查询“teams/:teamId/members/userX”等于 真的。这样我只需要更新团队表。它有效,但 它必须下载所有 Teams 数据,对于大型数据库来说 效率不高。
在保存按钮打开时查找所选选项的更改 按下并仅更新更改的用户(我最喜欢的 远)。
还有其他方法来构建数据库吗?还有其他方法可以轻松地从成员中删除团队吗?
【问题讨论】:
标签: firebase firebase-realtime-database denormalization