我正在使用MongoDB作爲日誌管理器來爲我的應用程序同步移動客戶端。我有這個模型中的NodeJS設置:貓鼬:填充填充的字段
var UserArticle = new Schema({
date: { type: Number, default: Math.round((new Date()).getTime()/1000) }, //Timestamp!
user: [{type: Schema.ObjectId, ref: "User"}],
article: [{type: Schema.ObjectId, ref: "Article"}],
place: Number,
read: Number,
starred: Number,
source: String
});
mongoose.model("UserArticle",UserArticle);
var Log = new Schema({
user: [{type: Schema.ObjectId, ref: "User"}],
action: Number, // O => Insert, 1 => Update, 2 => Delete
uarticle: [{type: Schema.ObjectId, ref: "UserArticle"}],
timestamp: { type: Number, default: Math.round((new Date()).getTime()/1000) }
});
mongoose.model("Log",Log);
當我想以檢索我使用follwing代碼日誌:
var log = mongoose.model('Log');
log
.where("user", req.session.user)
.desc("timestamp")
.populate("uarticle")
.populate("uarticle.article")
.run(function (err, articles) {
if (err) {
console.log(err);
res.send(500);
return;
}
res.json(articles);
正如你所看到的,我想貓鼬填充「uarticle」字段從日誌集合,然後,我想填充UserArticle(「uarticle」)的「文章」字段。
但是,使用此代碼,Mongoose僅使用UserArticle模型填充「uarticle」,但不填充uarticle內部的文章字段。
是否有可能使用Mongoose和populate()完成它,或者我應該做別的事情?
謝謝
我碰到其中基準嵌入了同樣的問題一個數組 - > myList:[{mid:{type:Schema.ObjectId,'ref':'OtherModel'},meta:[String]}]。當我嘗試.populate('myList.mid')時會產生以下錯誤... TypeError:無法調用未定義的方法'path' – Greg 2011-12-21 20:00:05