У меня есть приложение, работающее на NodeJS (экспресс + мангуст + джейд).У меня есть пост-маршрут / search (все маршруты находятся в отдельном модуле), который должен обрабатывать выборку данных из базы данных mongo и вставлять ее в шаблон Jade (в данном случае просто печатать консоль th):
router.post('/search', function (req,res) {
var componentsArray = null;
function getArray(){
console.log('Initializing...');
componentsArray = dataExchanger.search(req.body.select, req.body.selectType, req.body.searchField);
}
getArray(function () {
console.log('Documents returned.');
console.log('Printing array...');
console.log('Array: ' + componentsArray);
console.log('Array type: ' + typeof (componentsArray));
console.log('Rendering page...');
res.render('search_results');
});
});
Функция поиска и извлечения реализована в другом модуле dataExchanger :
exports.search = function(select, type, data) {
console.log('Fetching documents...');
componentsModel.find({name: data}, function (err, docs) {
if(!err) {
console.log('Returning documents...');
return docs;
} else {
console.log('Can\'t return documents!');
throw err;
}
});
};
Проблема заключается в , когда я использую функцию обратного вызова для getArray () , сервер просто зависает в момент возврата документов и перестает отвечать.Что я делаю не так?