如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?
Posted
技术标签:
【中文标题】如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?【英文标题】:How do I structure my mongoose schemas if have variations in user roles (seller vs buyer)? 【发布时间】:2018-03-02 05:06:00 【问题描述】:我的应用有多种用户类型。每个注册都需要不同的信息(例如:卖方的 ssn,买方的地址)。因此,它们将是不同的模式是有道理的。但它们也共享许多字段(例如:姓名、电子邮件、密码、安全问题、电话等)。
我该怎么办?从一个复制粘贴架构到另一个?
第二个问题是我使用的是passportjs,它要求用户模型...
在 app.js 中像这样
var User = require('./models/User');
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
所以,如果我确实使用了不同的架构,我将如何处理呢?
我已经厌倦了继承,但我认为猫鼬没有继承。那么验证呢?我不希望卖家验证在买家身上运行,他们会引发错误:没有给出 ssn,反之亦然。
【问题讨论】:
【参考方案1】:有几种方法可以处理这个问题。
在 Passport 部分,我建议您将 Account 模型与 User 模型分离。用户拥有个人资料,而帐户拥有登录资料。用户也有一个帐户(可能是通过引用)。
在角色部分,我同样建议每个用户都有一个角色,这很可能是一个嵌入式文档。其中一部分可以是通用字段。对于独特的字段,我会从一个 Mixed 类型的对象开始,这样你就可以把任何你想要的东西塞进去。
【讨论】:
如果用户类型具有嵌入文档的角色,那么要知道用户是卖方还是买方,我必须这样做user.role.type == 1
,而现在它是user.seller == true
。你能展示一个示例架构吗
就像我说的,有不同的方法来处理它,这取决于你想要优化什么。以上是关于如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?的主要内容,如果未能解决你的问题,请参考以下文章