0
更好的解決方案,我有兩個模式:貓鼬 - 用的附加信息附加
var ProgramSchema = new Schema({
active: Boolean,
name: String,
...
});
var UserSchema = new Schema({
username: String,
email: { type: String, lowercase: true },
...
partnerships: [{
program: { type: Schema.Types.ObjectId, ref: 'Program' },
status: { type: Number, default: 0 },
log: [{
status: { type: Number },
time: { type: Date, default: Date.now() },
comment: { type: String },
user: { type: Schema.Types.ObjectId, ref: 'User' }
}]
}]
});
現在,我想所有的程序文檔,而且「狀態」附加到每個文檔,返回如果程序已在與登錄用戶建立夥伴關係。
我的解決辦法是這樣的:
Program.find({active: true}, 'name owner image user.payments', function (err, p) {
if(err) { return handleError(res, err); }
})
.sort({_id: -1})
.exec(function(err, programs){
if(err) { return handleError(res, err); }
programs = _.map(programs, function(program){
var partner = _.find(req.user.partnerships, { program: program._id });
var status = 0;
if(partner){
status = partner.status;
}
program['partnership'] = status;
return program;
});
res.json(200, programs);
});
的req.user對象包含登錄的用戶,包括合作伙伴關係陣列中的所有信息。
爲了得到這個解決方案的工作,我必須
partnership: Schema.Types.Mixed
追加到ProgramSchema。
這看起來有點凌亂,這就是爲什麼我要求幫助。你怎麼看?
謝謝,我會試試看。 – BastianW 2014-10-01 13:48:26