Так что я делаю пост запрос на мой Экспресс поиска маршрутизатор, где я использую модуль Узла выборки, чтобы вызвать удаленный API:Невозможно получить ответ JSON с моей экспресс-маршрутизатора с помощью узла Fetch модуля
var fetch = require('node-fetch');
router.route('/search')
//Performs Job Search
.post(function(req, res){
var area = req.body.area;
fetch('https://api.indeed.com/ads/apisearch?publisher=*********&l=' + area)
.then(function(res) {
return res.json();
}).then(function(json) {
console.log(json);
});
})
Я использую угловой 1 на стороне клиента для вызова маршрутизатора и разобрать возвращаемый JSON:
$scope.search = function(){
$http.post('/api/search', $scope.newSearch).success(function(data){
if(data.state == 'success'){
//perform JSON parsing here
}
else{
$scope.error_message = data.message;
}
});
}
Я только начинаю с стеком MEAN и имею только смутное представление о том, обещании Работа. Поэтому моя проблема заключается в том, что моя функция углового поиска не получает строку JSON, которую я хочу вернуть из моего удаленного вызова API. Но параметр данных устанавливается на мою страницу html. В конце концов точки останова, которые я установил в предложениях .then(), попадают, и мой json возвращается. Итак, мой вопрос: как я могу использовать Anguular для получения значений JSON, когда они наконец вернутся?
Ваша функция сообщения не возвращает ответ. Разве у вас нет 'res.send (json)' в вашей второй инструкции 'then'? –
Когда я устанавливаю точки останова в своей функции .post, он переходит в конец функции, а затем возвращается клиенту до того, как будет удалена любая из функций then. В конце концов точка останова в моих функциях .then ударяется и возвращается, но не совсем уверен, где, когда моя угловая функция уже наступила. Я попробовал ваше решение, и у меня возникла следующая ошибка: UnhandledPromiseRejectionWarning: Отказ от необработанного обещания (id отклонения: 2): Ошибка: не удается установить заголовки после их отправки. –
А, у вас уже есть res.json. Поэтому вам не требуется res.send. –