MongoDB数据库devise为不同types的用户

我正在为有多种types的用户的网站制作一个RESTful API。

  • pipe理员
  • 供应商(公司名称,地址)
  • 普通用户(姓名,电话)

用户永远是他们最初注册的东西(永久专业化)。

我正在使用Mongoose和NodeJS,并且为User提供了以下模型,以便将来可以轻松地pipe理新的社交网站的login。

 { userType: { type: String, lowercase: true }, contact: { email: { type: String, lowercase: true, index: { unique: true, sparse: true } } }, accounts: { local: { password: String }, facebook: { id: String, token: String } } } 

所以我的问题是,因为我有不同types的用户,每种types有不同的configuration文件信息,我应该在哪里存储有关每个用户的信息?

为每种types创build不同的模型并在User模型中添加引用密钥? 或者,还有更好的方法?

我不认为把这些信息放在不同的集合中是一个好主意。 MongoDB的优势之一是你可以把所有相关的用户信息放在一个单独的文档中,所以你可以用1个查询来检索它。

我会添加3个字段到用户模型:

 adminInfo: { ... }, vendorInfo: { ... }, userInfo: { ... }, 

并根据用户types填写正确的一个。 其他2个字段可以为null (甚至根本不存在)。

不要走正常化路线 – 这里不需要。

这个问题似乎是在通用数据库devise上。 我会推荐任何和所有用户之间共享的字段在你的用户模型中,然后是专门针对某种模型存储在用户模型中的字段,例如“Admin”,如果用户只有1types的用户,您可以像您一样存储types和通用ID字段,然后根据types和ID字段find适当的用户types特定数据。 或者,您可以为每个用户types拥有一个id和model关系,并且不要求这些字段中的任何一个以及检查null。 后一种方法可能会让您灵活多变,允许用户有多种types(可能selectlogin为)。