Tôi đang sử dụng MongoDB làm trình quản lý nhật ký cho ứng dụng của mình để đồng bộ hóa ứng dụng khách di động. Tôi có các mô hình này thành lập năm NodeJS:Mongoose: Điền một trường được điền đơn
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);
Khi tôi muốn truy xuất nhật ký tôi sử dụng mã 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);
Như bạn thấy, tôi muốn cầy mangut để cư "uarticle" trường từ bộ sưu tập Nhật ký và, sau đó, tôi muốn điền vào trường "bài viết" của UserArticle ("uarticle").
Nhưng, sử dụng mã này, Mongoose chỉ điền "uarticle" bằng Mô hình UserArticle chứ không phải trường bài viết bên trong uarticle.
Có thể thực hiện nó bằng Mongoose và điền vào() hoặc tôi nên làm điều gì đó khác?
Cảm ơn bạn,
tôi đã chạy vào cùng một vấn đề mà các tài liệu tham khảo được nhúng vào trong một mảng -> myList: [{mid: {type: Schema.ObjectId, 'ref': 'OtherModel'}, meta: [String]}]. Điều này tạo ra lỗi sau khi tôi thử .populate ('myList.mid') ... TypeError: Không thể gọi phương thức 'path' của undefined – Greg