Mongoose: заполнить заполненное поле

Я использую 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);

Когда я хочу получить журнал, я использую следующий код:


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 "из коллекции журнала, а затем я хочу заполнить поле" article "в UserArticle (" uarticle ").

Но, используя этот код, Mongoose заполняет только" uarticle ", используя модель UserArticle, но не поле article внутри uarticle.

Можно ли сделать это с помощью Mongoose и populate (), или я должен сделать что-нибудь еще?

Спасибо,

18
задан Francesc 17 December 2011 в 09:53
поделиться