在firebase中同时更新多个用户

时间:2017-03-22 15:23:08

标签: javascript angularjs firebase firebase-realtime-database

我的Firebase 2.x数据库中有一个与此类似的对象:

{
  "users": {
    "$id": {
      "date_of_birth": "June 23, 1912",
      "full_name": "Alan Turing",
      "group": "users",
      "nickname": "Alan The Machine"
    }
  }
}

并搜索同时更新多个用户的最佳方式。例如,我想将具有“用户”组的所有用户更改为组“moderadors”或类似用户。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题,你在评论中提到了一个。

1)查询group = users的所有用户。迭代每个并将每个组中的组更新为group = moderators

2)添加一些结构

users
  uid_0
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "group": "-UY89j99j9jasd",
    "nickname": "Alan The Machine"
  uid_1
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "group": "-Y888jasjdjaos",
    "nickname": "Alan The Machine"
  uid_2
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "group": "-UY89j99j9jasd",
    "nickname": "Alan The Machine"

和小组

-UY89j99j9jasd
  group_name: "users"
-Y888jasjdjaos
  group_name: "dudes"

然后将所有“用户”的当前用户转变为版主,将group_name更改为“版主”。这也很好,因为如果你决定不喜欢“版主”这个词,而是想把它们称为“pwn的人”,你可以通过一次改变来做到这一点。

-UY89j99j9jasd
  group_name: "moderators"   //or 'people who pwn'
-Y888jasjdjaos
  group_name: "dudes"

3)翻转您的逻辑并将用户存储在主持人或用户节点中。

users
  uid_0
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "nickname": "Alan The Machine"
  uid_1
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "nickname": "Alan The Machine"
  uid_2
    "date_of_birth": "June 23, 1912",
    "full_name": "Alan Turing",
    "nickname": "Alan The Machine"

和小组

-U8asdjoasjds
  group_name: "moderators"
  members:
    uid_0: true
    uid_2: true
-Yuiis9isisis
  group_name: "users"
  members
    uid_1: true

现在,您可以轻松获取用户/成员组中的所有子项并将其添加到审核人组,您也可以更改这些组的名称。

4)不推荐的方式

administrators
  uid_0: true
  uid_2: true
users
  uid_1: true

这类似于#3,但密钥识别组类型。与3相同,获取用户的孩子并将其写入管理员。通常最好的做法是将关键名称与它们包含的数据取消关联,但在这种情况下可能没问题。