javascript - 在firebase中同时更新多个用户

标签 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"
    }
  }
}

并寻找同时更新多个用户的最佳方式。例如,我想将“用户”组的所有用户更改为“版主”组或类似组。

我该怎么做?

最佳答案

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

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 类似,但 key 标识组类型。与 3 相同,获取用户的子级并将其写入管理员。通常最好的做法是取消键名与其包含的数据的关联,但在这种情况下可能没问题。

关于javascript - 在firebase中同时更新多个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42955943/

相关文章:

Android Studio ML 套件无法加载 OCR 模块

javascript - uid 未保存在 firebase 数据库中

firebase - 如何从应用程序远程强制注销firebase auth用户

javascript - React Router 中的多个可选参数

php - "Save As"使用 PHP 和/或 JavaScript 的对话框

javascript - 在一定范围内转换度数

javascript - AngularJS : continue execution in a controller once a looped service method has ended

javascript - 如何在用户单击内部时自动展开 DIV 元素中的 IFrame?

javascript - 使用单选按钮动态切换所有选项卡

angularjs - 当 Angular Js 为零时隐藏输入中的值