【发布时间】:2021-06-09 05:31:26
【问题描述】:
我正在尝试找出如何使用 Mongoose 在 MongoDB 中保存对其他文档的多个引用。保存一个对其他文档的引用并不是什么大问题,但是当您想要保存对其他文档的多个引用并稍后填充它们时,它会很快变得复杂。
让我们看看我有什么:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Book = Schema({
title: String,
reviews: [{ type: Schema.Types.ObjectId, ref: 'Review' }]
});
var Review = Schema({
body: String
});
var Book = mongoose.model('Book', bookSchema);
var Review = mongoose.model('Book', reviewSchema);
var reviewItem = new Review({body: "review content"});
Book.find({}).exec(function(err, collection) {
if(collection.length === 0) {
reviewItem.save(function (err) {
if (err) return handleError(err);
var bookItem = new Book({
title: "book title",
reviews: reviewItem._id
});
bookItem.save(function (err) {
if (err) return handleError(err);
})
})
}
})
在这个例子中,我在bookItem 中保存了reviewItem 的引用,但我想在bookItem 中保存一个带有引用数组的reviewItem 对象数组。我怎么能那样做?
当Book 被填充时我期待的结果:
[
{
"_id": "547b1a4685207124a085d0c5",
"title": "The Enterprise And Scrum",
"reviews": [
{
"_id": "547b1a4685207124a085d0c3",
"body": "review 1"
},
{
"_id": "543d99564d01f3de94655ba2",
"body": "review 2"
},
{
"_id": "543d995625755d19ba72863d",
"body": "review 3"
}
]
}
]
【问题讨论】:
标签: node.js mongodb reference mongoose populate