estoy usando MongoDB como encargado de registro para mi aplicación a continuación, sincronizar los clientes móviles. Tengo estos modelos establecidos en NodeJS:Mangosta: rellenar un campo rellenado
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);
Cuando quiero retrive el registro utilizo el código siguientes aparatos:
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);
Como se puede ver, quiero mangosta para poblar el "uarticle" campo de la colección Log y, a continuación, deseo rellenar el campo "artículo" del artículo de usuario ("uarticle").
embargo, el uso de este código, sólo se puebla Mangosta "uarticle" utilizando el Modelo de UserArticle, pero no el campo de los artículos dentro de uarticle.
¿Es posible lograrlo mediante la mangosta y poblar() o que debería hacer algo más?
Gracias,
me he encontrado con el mismo problema en el que la referencia está incrustado en una matriz -> myList: [{mid: {type: Schema.ObjectId, 'ref': 'OtherModel'}, meta: [String]}]. Esto produce el siguiente error cuando intento .populate ('myList.mid') ... TypeError: no se puede llamar al método 'path' de undefined – Greg