我的Firebase 2.x数据库中有一个与此类似的对象:
{
"users": {
"$id": {
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"group": "users",
"nickname": "Alan The Machine"
}
}
}
并搜索同时更新多个用户的最佳方式。例如,我想将具有“用户”组的所有用户更改为组“moderadors”或类似用户。
我该怎么做?
答案 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相同,获取用户的孩子并将其写入管理员。通常最好的做法是将关键名称与它们包含的数据取消关联,但在这种情况下可能没问题。