,我可以理解你想添加事件的关键在你的架构。那么你的架构将是这样的:
var userSchema = new Schema({
user: { type: String, required: true, trim: true },
password: { type: String, required: true, trim: true },
events: [{
notes: { type: String,required: true, trim: true },
start_date: { type: Date,required: true },
end_date: { type: Date,required: true }
}]
}
userSchema.plugin(AutoIncrement);
var userSchema = mongoose.model('userSchema', userSchema);
});
如果上面的代码不能正常工作,那么你可以创建两个模式,一个为EVENTDATA用户等,并可以在userSchema填充您的EVENTDATA。
因此您的代码将是这样的:
userSchema.js:
var userSchema = new Schema({
user: { type: String, required: true, trim: true },
password: { type: String, required: true, trim: true },
events: {type: mongoose.Schema.Types.ObjectId, ref: 'EventData' }
userSchema.plugin(AutoIncrement);
module.exports = mongoose.model('userSchema', userSchema);
});
而且你eventDataSchema将是:
eventSchema.js:
var eventDataSchema = new Schema({
notes: { type: 'string',required: true, trim: true },
start_date: { type: Date,required: true },
end_date: { type: Date,required: true }
}
eventDataSchema.plugin(AutoIncrement);
module.exports = mongoose.model('EventData', eventDataSchema);
});
然后你就可以得到结果类似: index.js:
var eventSchema = require('./eventSchema');
var userSchema = require('./userSchema');
var populate = [{
path: 'events',
model: 'EventData',
select: '_id notes start_dat end_date'
}];
var find = function (query) {
return userSchema.find(query).populate(populate).exec();
}
console.log(find());
结果:
{
_id:cfgvhbjnkmkdcfxghgjklxnmbxhdhjxjhjhgx,
user: John Doe,
password: 123,
events: [ { _id: 1gfye56785g3ycgevhxeftx568765egcd,
notes: Event A,
start_date: 1/1/01,
end_date: 1/1/01
} ]
}
能否请你更具体? –
当然...我想在这个模式中实现用于身份验证的用户名和密码,但是在这个模式中,我还希望有很多的eventData块。例如: 用户:John Doe的 密码:123个 事件:[{_id:1 说明:事件A 起始日期:1/1/01, END_DATE:1/1/01, },{ _id:2 笔记:事件B 起始日期:01年1月2日, END_DATE:01年1月2日, },{ _id:3个 笔记:事件C 起始日期:01年1月3日, END_DATE:1/3/01, }] – user258813
John Doe会注册并可以访问他的活动A,B和C.虽然可能会有另一个用户使用不同的事件集合 – user258813