Mongodb/Mongoose:为用户帐户创建两种类型的模型

Posted

技术标签:

【中文标题】Mongodb/Mongoose:为用户帐户创建两种类型的模型【英文标题】:Mongodb/Mongoose : create two types of models for user accounts 【发布时间】:2016-12-02 04:58:28 【问题描述】:

我在 nodejs 中使用 mongoose,我正在寻找一些关于 MongoDB 架构的建议,以拥有两种类型的用户:员工和客户,他们都将使用相同的注册页面(我使用护照作为认证)。

我正在考虑创建一个公共帐户模型(用于员工和客户),其中将包含一些公共内容,例如电子邮件、通行证、姓名等,然后将帐户 shema 嵌入员工和客户模型中。

我不确定这是否是正确的方法,因此非常感谢任何建议。

谢谢。

【问题讨论】:

【参考方案1】:

因为employeeclient 都有很多共同的属性,但很少有专门的属性。所以,恕我直言,最好为他们制作一个单一的架构。

var Person = new Schema(
    type: String,
    // common properties below
    email: String,
    dob: String,
    // props of employee
    joiningDate: Date,
    // props of client
    account:  type: Schema.Types.Mixed 
);

在这里,你可以在type的基础上分离ClientEmployee

【讨论】:

我可以在每次用户想要注册时动态指定帐户架构吗?如果他注册为客户,我将使用用户帐户:type: Schema.Types.Mixed ,ref: client 和员工同样的事情

以上是关于Mongodb/Mongoose:为用户帐户创建两种类型的模型的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB Mongoose Schema 嵌套文档结构和关系

多用户账户的 MongoDB/Mongoose 模式

基于多个子文档的MongoDB/Mongoose查询

不能使用 Node js(express) 和 MongoDB(mongoose) 对用户配置文件进行审核

E11000 MongoDB/Mongoose 重复键错误

如何使用用户名和密码连接 mongodb(mongoose)?