平均堆栈模式

我正在使用MEAN堆栈,我有可以build立charts users

 where `user, chart` = mongoose schemas 

我的问题是,如何将用户创build的图表与用户本身链接,以便我可以在pipe理页面上显示过去创build的图表?

 var ChartSchema = new Schema({ name: [String], type: [String], data: [Array] }); var UserSchema = new Schema({ name: String, email: { type: String, lowercase: true }, role: { type: String, default: 'user' }, hashedPassword: String, provider: String, salt: String, twitter: {}, google: {} }); 

       

网上收集的解决方案 "平均堆栈模式"

在ChartSchema中添加一个属性或在UserSchema中添加一个Chart的Array。 在两个Schema上添加和_id字段。

 ChartSchema = new Schema({ // ... _creator: { type: Number, ref: 'User' }, }); 

要么

 UserSchema = new Schema({ // ... chartsCreated: [{ type: Number, ref: 'Chart' }] }); 

假设ChartSchema注册为Chart ,UserSchema注册为User

或者,也许你可以在ChartSchema中添加一个名为created的属性,这样你可以通过发布时间显示某人的图表,如下所示:

 var ChartSchema = new Schema({ created: { type: Date, default: Date.now }, user: { type: Schema.ObjectId, ref: 'User' } }); mongoose.model('Charts', ChartSchema); 

 var UserSchema = new Schema({ // ... charts: [{ type: Schema.ObjectId, ref: 'Charts' }] }); mongoose.model('User', UserSchema); 

在控制器文件中,例如:

 Charts.find().sort('-created').populate('user', 'displayName').exec(function (err, charts) { // ... }); 

要了解更多详情,你可以看到MEAN Stack Docs和Mongoose Docs

在您的用户架构中添加一个新的字段chartData,您不需要更改您的图表架构。

 var UserSchema = new Schema({ name: String, email: { type: String, lowercase: true }, role: { type: String, default: 'user' }, hashedPassword: String, provider: String, salt: String, twitter: {}, google: {}, chartData : [ChartSchema] }); 

并导出您的架构

mongoose.model('User',UserSchema)