如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?

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。你能展示一个示例架构吗 就像我说的,有不同的方法来处理它,这取决于你想要优化什么。

以上是关于如果用户角色(卖家与买家)有所不同,我该如何构建我的猫鼬模式?的主要内容,如果未能解决你的问题,请参考以下文章

寒假随笔—网上购物(JAVAWEB)

在微服务架构中组织授权的最佳实践?

Wordpress 添加自定义角色以及删除默认角色

paypal IPN 获取买家交易ID

rails中的多态关联

Ruby on rails - 2 种用户类型