mongoose关系

我正在学习Mongodb,我正在使用Mongoose,我想创build一个非常dynamic的注册过程。 我pipe理使用护照注册的第一步,一切正常,我创build了用户,它在数据库中。 现在我的注册过程将继续,用户必须select一个“angular色”:你是什么types的用户? 有两个选项:“基本”和“高级”。 基本只有3个属性,高级有3个基本属性加上其他几个。

我需要扩展userSchema或添加基于该angular色的新字段,但一个星期后它不工作,我尝试了许多NPM如: mongoose-relationshipmongoose-schema-extend

这基本上是我所拥有的:

 userSchema = new Schema({ id : Number, email : { type: String, required: true }, role : { type: String, required: true }, profile : { ... } // Profile fields are different for each role. }); // profile 1 basicSchema = new Schema({ info1 : { type: String, required: true }, info2 : { type: String, required: true }, info3 : { type: String, required: true } }); // profile 2 advancedSchema = new Schema({ info1 : { type: String, required: true }, info2 : { type: String, required: true }, info3 : { type: String, required: true }, info4 : { type: String, required: true }, info5 : { type: String, required: true }, info6 : { type: String, required: true } }); 

用户已经存在,他正在一个屏幕上,他需要select一个angular色并填充所选的configuration文件。

有关我正在使用nodejsexpressjs的信息

我希望你能帮上忙。 谢谢。

使用mongoose-schema-extend:

通过npm安装: $ npm install mongoose-schema-extend

使用你的代码的例子:

 var mongoose = require('mongoose'), extend = require('mongoose-schema-extend'); var Schema = mongoose.Schema; var userSchema = new Schema({ id : Number, email : { type: String, required: true }, role : { type: String, required: true }, },{ collection : 'users' }); //profile 1 var basicSchema = userSchema.extend({ info1 : { type: String, required: true }, info2 : { type: String, required: true }, info3 : { type: String, required: true } }); //profile 2 var advancedSchema = userSchema.extend({ info1 : { type: String, required: true }, info2 : { type: String, required: true }, info3 : { type: String, required: true }, info4 : { type: String, required: true }, info5 : { type: String, required: true }, info6 : { type: String, required: true } }); 

mongoose-架构扩展

这是你想要的。 “inheritance”的概念和歧视领域。 试一试。 我用它,创造奇迹。 基本上你有三种types的用户:基本,高级和专家。 每个基于您的核心/基础模型,然后扩展您需要的额外属性,为每个angular色定义一个inheritance。

这给了你很多好处,主要是:mongoose会填充适当的模型,踢你在衍生模型等有任何validation。

https://github.com/briankircho/mongoose-schema-extend