2014-10-18 28 views
1

我想获得一个像下面这样的对象,所以我可以将它们传递给我的Dust.js模板。Mongoose和async.parallel

{ officers: 
    [ { _id: '543dcbcf846c139cc042c813', name: 'Alpha' }, 
    { _id: '543dcc25846c139cc042c814', name: 'Beta' }, 
    { _id: '543dcd91846c139cc042c815', name: 'Gamma' } ], 
    branches: 
    [ { _id: '543dcbcf846c139cc042c813', name: 'Alpha' }, 
    { _id: '543dcc25846c139cc042c814', name: 'Beta' }, 
    { _id: '543dcd91846c139cc042c815', name: 'Gamma' } ] } 

这是我在控制器中的代码,以获取使用猫鼬的文档并将它们结合起来。我总是得到错误500,我的代码有什么问题吗?

var Officers = require('../../models/officers'); 
var Branches = require('../../models/branches'); 

router.get('/create', function (req, res) { 


    async.parallel({ 
    officers: function(cb){ 
     Officers.find({}, '_id name', cb); 
    }, 
    branches: function(cb){ 
     Branches.find({}, '_id name', cb); 
    } 
    }, function(err, results){ 
    res.render('companies/create', results); 
    }); 


}); 
+0

你应该处理您的回调莫名其妙的错误,否则就会有麻烦时,蒙戈抛出一个错误,你的页面呈现的空没有任何解释。 – 2016-08-16 06:42:08

回答

0

上面的代码没有问题。原来我忘了在代码之前放这个var async = require('async');

var Officers = require('../../models/officers'); 
var Branches = require('../../models/branches'); 
var async = require('async'); 

router.get('/create', function (req, res) { 
... 
... 
+0

感谢您发布此内容,只是设法让我的头部围绕异步并行查询,非常强大。 – 2018-02-08 00:11:22

+0

您也可以使用=> Branches.find({},'_id name')。populate('Officers')。exec(cb); – 2018-02-08 00:13:11