我正在为一个有多种类型用户的网站制作一个 RESTful API。
- 管理员
- 供应商(公司名称、地址)
- 常规用户(姓名、电话)
用户将始终是他们最初注册的用户(永久特化)。
我正在使用 Mongoose 和 NodeJS,并且我为用户
提出了以下模型,以便我将来可以轻松管理新社交网站的登录。
{
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 }
}
}
所以我的问题是,由于我有不同类型的用户,并且每种类型都有不同的个人资料信息,我应该在哪里存储有关每个用户的信息?
为每种类型制作不同的模型并在User
模型中添加引用键?或者有更好的办法吗?
最佳答案
我认为将这些信息放入不同的集合中不是一个好主意。 MongoDB 的优势之一是您可以将所有相关的用户信息放在一个文档中,这样您就可以通过 1 个查询来检索它。
我会向用户模型添加 3 个字段:
adminInfo: { ... },
vendorInfo: { ... },
userInfo: { ... },
并根据用户类型填写正确的内容。其他 2 个字段可以为 null
(甚至根本不存在)。
不要走标准化路线 - 这里不需要。
关于node.js - 针对不同类型用户的MongoDB数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577921/