抱歉,如果标题本身自相矛盾 :) 这里是 JS 初学者..
我得到一组 MongoDB 文档,我想用另一个对象(来自另一个表)扩展每个文档,以便我可以将这个扩展对象数组传递到我的 View 。我想实现这样的目标:
exports.myFunction = function(req, res) {
Book.find({'good': true}).exec(function(err, docs) { // find good books
// add authors to each book (?):
for (var i = 0, i < docs.length; i++) {
docs[i].author = Author.findOne({'_id': docs[i].author_id});
}
// render books:
res.render('/books.ejs', {books: docs});
});
}
我认为这不是实现它的 JavaScript 方式 :) 那么我该如何实现呢?
谢谢,
最佳答案
使用 $lookup
聚合框架中的函数。以下示例演示了如何在您的案例中应用它:
exports.myFunction = function(req, res) {
Book.aggregate([
{ "$match": { "good": true } },
{
"$lookup": {
"from": "authors"
"localField": "author_id",
"foreignField": "_id",
"as": "author"
}
},
{ "$unwind": "author" }
]).exec(function(err, docs) {
res.render('/books.ejs', {books: docs});
});
}
关于javascript - Node.js 异步遍历对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41420847/