gpt4 book ai didi

database - 按电子邮件地址或用户 ID 构建用户数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:25 25 4
gpt4 key购买 nike

我想让数据库中的用户以一种更易于阅读和管理的方式构建。使用用户电子邮件地址作为属性名称而不是用户 ID:

用户:

  "Users" : {
"emailaddress@domain.com":{
"id": "DK66qu2dfUHt4ASfy36sdfYHS9fh",
"name": "A Display Name",
"groups": {
"moderators": true,
"users": true
}
},
{...}
}

因此,如果我有一个组中的用户列表,它们可以被视为电子邮件列表而不是用户 ID 列表。

群组如:

  "Groups": {
"moderators":{
"name": "moderator",
"members": {
"emailaddress@domain.com": true,
"emailaddress2@domain.com": true
}
}
}

组而不是:

  "Groups": {
"moderators":{
"name": "moderator",
"members": {
"DK66qu2dfUHt4ASfy36sdfYHS9fh": true,
"K2fkHYQDFOge3Hw7SjRaGP3N2sdo": true
}
}
}

但是,使用规则来验证用户的属性(例如他们的组),需要我维护两个用户列表,一个类似于上面的列表,另一个基本上是 ID 和键值对的表电子邮件地址,以便我可以从他们的 uid 获取用户的电子邮件地址。

伪代码规则: Users[UsersKeyVal[auth.uid]].groups.moderator == true

对于 Firebase,什么是最可接受的做法?两者各有什么优缺点?

最佳答案

请不要在他们的电子邮件地址下存储用户数据!这将是以后的大麻烦。

您的用户节点应遵循“标准”Firebase 设计模式

users
uid_0
name:
gender:
etc
uid_1
name:
gender:
etc

最重要的是,一般情况下,最好将节点中存储的动态数据与节点的键解除关联。

为什么?

假设您构建了一个复杂的结构,其中包含对 frank@mycoolcompany.com 的各种链接和引用,然后@mynotsocoolcompany.com 收购了@mycoolcompany.com。那么,您将不得不进入并重建整个数据库中对弗兰克斯电子邮件的所有引用。呃。

如果@mycoolcompany.com 有 100 或 1000 个用户怎么办!哎哟。

如果您解除数据关联,就像我上面建议的结构一样,您只需更改节点内的电子邮件地址和其他一切......就可以了!

请阅读这个关于堆栈溢出的答案 - 由 Firebaser 编写并解决您的问题

Firebase data structure and url

关于database - 按电子邮件地址或用户 ID 构建用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37651261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com