平均堆栈模式
我正在使用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)