首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按电子邮件地址或用户ID构造用户数据

按电子邮件地址或用户ID构造用户数据
EN

Stack Overflow用户
提问于 2016-06-06 06:57:46
回答 2查看 1.3K关注 0票数 3

我希望数据库中的用户能够更容易地阅读和管理。使用用户电子邮件地址作为属性名而不是用户ID:

用户:

代码语言:javascript
复制
  "Users" : {
    "emailaddress@domain.com":{
      "id": "DK66qu2dfUHt4ASfy36sdfYHS9fh",
      "name": "A Display Name",
      "groups": {
        "moderators": true,
        "users": true
      }
    },
    {...}
  }

这样,如果我在一个组中有一个用户列表,他们就可以被读成电子邮件列表,而不是用户ID列表。

组,如:

代码语言:javascript
复制
  "Groups": {
    "moderators":{
      "name": "moderator",
      "members": {
        "emailaddress@domain.com": true,
        "emailaddress2@domain.com": true
      }
    }
  }

组而不是:

代码语言:javascript
复制
  "Groups": {
    "moderators":{
      "name": "moderator",
      "members": {
        "DK66qu2dfUHt4ASfy36sdfYHS9fh": true,
        "K2fkHYQDFOge3Hw7SjRaGP3N2sdo": true
      }
    }
  }

然而,使用规则来验证用户(例如他们的组)的属性,需要我维护两个用户列表,一个像上面的列表,另一个基本上是ID和电子邮件地址的键值对的表,这样我就可以从他们的uid中获得用户的电子邮件地址。

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

有了火力基地,什么才是最可接受的做法?两者的利弊是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-06 18:19:19

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

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

代码语言:javascript
复制
users
  uid_0
   name:
   gender:
   etc
  uid_1
   name:
   gender:
   etc

底线是,一般来说,最好将存储在节点中的动态数据与节点的键分离。

为什么?

假设您构建了一个具有各种链接和对frank@mycoolcompany.com的引用的复杂结构,然后由@mynotsocoolcompany.com获取@mycoolcompany.com。那么,您就必须重新构建整个数据库中对franks电子邮件的所有引用。呃。

那么,如果有100或1000个用户@mycoolcompany.com!唉哟。

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

请阅读由Firebaser编写的堆栈溢出的答案,并回答您的问题。

防火墙数据结构和url

票数 2
EN

Stack Overflow用户

发布于 2016-06-06 07:59:00

在我看来,您的数据结构没有问题。

根据文档

这是双向关系的必要冗余。它允许您快速有效地获取您的成员资格。

此外,使用从firebase生成的UId或您的自定义Id (在这里,您的电子邮件)不会改变firebase的工作方式。你只需要确保你的电子邮件是独一无二的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37651261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档