,我可以理解你想添加事件的關鍵在你的架構。那麼你的架構將是這樣的:
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