Używam MongoDB jako strażnika dziennika dla mojej aplikacji, aby następnie zsynchronizować klientów mobilnych. Mam ten model ustanowione w NodeJS:Mongoose: Wypełnij zaludnione pole
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);
Kiedy chcę sprowadzaniu dziennik użyć kodu 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);
Jak widać, chcę mangusta, aby wypełnić „uarticle” pole z kolekcji Log, a następnie chcę wypełnić pole "article" w UserArticle ("uarticle").
Ale używając tego kodu, Mongoose wypełnia tylko "uarticle" przy użyciu UserArticle Model, ale nie jest to pole artykułu wewnątrz uarticle.
Czy można to zrobić za pomocą mangusty i wypełnienia() lub powinienem zrobić coś innego?
Dziękuję
Zabrakło mi na ten sam problem, gdzie odwołanie jest osadzony w tablica -> myList: [{mid: {type: Schema.ObjectId, 'ref': 'OtherModel'}, meta: [String]}]. Tworzy następujący błąd, gdy próbuję .populate ("myList.mid") ... TypeError: Nie można wywołać metody "ścieżka" o niezdefiniowanym – Greg