1
我想使用異步模塊來削減特定於Node.js的'回調地獄'。基本上,我試圖使用async.series
從數據庫中檢索一些信息並將其顯示在我的視圖中。儘管如此,我認爲沒有結果。Node.js異步模塊問題
這是我到目前爲止的代碼:我首先要查詢郎模型(MongoDB的),找到匹配req.query.keyword
這些記錄
// 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 });
}
);
}
。之後,我想查詢人體模型並找到所有具有該特定語言技能的人類。此外,FOR循環意味着消除我的數組中的重複項,因爲人可能有多種語言。
剛試過你的代碼,它完美的作品!儘管如此,順序降序函數是因爲我希望結果以降序的語言技能爲基礎返回。因此,例如,如果我有兩個英語技能爲5和10的人,我希望具有10的人成爲搜索結果列表中的第一個人。該片段按照發現它們的順序返回人類列表。 –
@shinpou如果訂單正在導入,我不完全確定是否使用'$ in'會保持訂購。所以請測試:) – robertklep
我試過了,順序是不是我正在尋找的:(但仍然!我得到正確的結果回!非常感謝!仍然,你可以指向我在某個方向文檔)或解釋完成的回調函數,它是否簡單地集成在瀑布函數中,並用於將參數傳遞給下一個函數? –