Я искал некоторый код, который теперь упрощается в течение нескольких дней. Пробовал много вариантов, но я не могу понять это.Возврат данных из функции http-запроса
Я хочу сделать http-запрос функцией, а затем вернуть данные для использования в другой функции. Моя проблема в том, что я не могу получить данные в другой функции. Консоль.log работает отлично.
function getData() {
request('http://' + address + ':' + port + '/all.xml', function (err, res) {
if (err) {
console.log('ERROR: Unable to get CyberQ Data')
}
else {
console.log(res.body);
return res.body;
}
});
}
Приведенный ниже код - это мой первоначальный код. Также работает как прелесть, ожидайте самую важную роль, res.json. Мне нравится отправлять данные обратно в браузер, но результат недоступен в функции в месте, где я добавил res.json.
Если любой из этих двух частей кода может работать, я могу заставить мой код работать. Я, вероятно, не замечаю ничего общего. Заранее спасибо за любую помощь
router.get('/bbq/cyberqData', function (req, res) {
request('http://' + address + ':' + port + '/all.xml', function (err, res) {
if (err) {
console.log('ERROR: Unable to get CyberQ Data')
}
else {
console.log('getting the data ');
parseString(res.body, function (err, result) {
console.log(result.nutcallstatus);
return result;
});
}
});
res.json(result);
});
Спасибо за ваш ответ, но он не работает. Заменить результат возврата с помощью res.json (result), дает мне ошибку undefined, не является функцией на линии res.json. – Derooie
Измените переменную 'res'. У вас есть 2 ... Попробуйте 'router.get ('/ bbq/cyberqData', function (req, routerRes) {' then later 'routerRes.json (result)' , который должен это сделать – ben
Спасибо, я полностью его игнорировал! – Derooie