javascript - Node.js 异步遍历对象数组

标签 javascript arrays node.js mongodb

抱歉,如果标题本身自相矛盾 :) 这里是 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/

相关文章:

node.js - vue.js 和 vue-multilingual 我的 webpack 编译没有翻译正确

javascript - 具有多个 CSS 类的 Xpath

javascript - 创建一个 HTMLCollection

javascript - Array(n) 和 [...Array(n)] 之间的区别

node.js - 我可以在 node-mongodb-native 驱动程序中执行原始 MongoDB 查询吗?

javascript - Mocha如何将 Node Controller 功能公开给测试脚本

javascript - 多个脚本冲突

javascript - AngularJS 从数据库设置选择选项

javascript - 冒泡排序 - 为什么需要额外的循环

c++ - std::array<std::array<T, N2>, N> 数据成员上的括号运算符重载