【发布时间】:2013-11-09 19:36:38
【问题描述】:
我正在尝试使用异步模块来减少特定于 Node.js 的“回调地狱”。基本上,我正在尝试使用async.series 从数据库中检索一些信息并将其显示在我的视图中。不过,在我看来,我没有得到任何结果。
这是我目前的代码:
// Search
exports.search = function(req, res) {
var x = [];
async.series([
function(cb) {
Lang.find({ lang: req.query.keyword }).sort({ verbal: -1 }).exec(function(err, langs) {
cb(null, langs);
});
},
function(cb) {
Human.find({}, function(err, humans) {
cb(null, humans);
});
}],
function(err, results) {
if (err) {
res.send(500);
}
for(var i = 0; i < results[0].length; i++) {
for(var j = 0; j < results[1].length; j++) {
if(results[1][j]._id == results[0][i].human) {
x.push(results[1][j]);
}
}
}
res.render('myView', { title: 'Search Results', humans: x });
}
);
}
我首先要查询 Lang 模型 (MongoDB) 并找到匹配 req.query.keyword 的记录。之后,我想查询人类模型并找到所有具有特定语言技能的人类。此外,FOR 循环旨在消除我的数组中的重复项,因为人类可能有多种语言。
【问题讨论】:
标签: javascript node.js mongodb asynchronous express