2016-11-05 4 views
0

Так что я делаю пост запрос на мой Экспресс поиска маршрутизатор, где я использую модуль Узла выборки, чтобы вызвать удаленный 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, когда они наконец вернутся?

+0

Ваша функция сообщения не возвращает ответ. Разве у вас нет 'res.send (json)' в вашей второй инструкции 'then'? –

+0

Когда я устанавливаю точки останова в своей функции .post, он переходит в конец функции, а затем возвращается клиенту до того, как будет удалена любая из функций then. В конце концов точка останова в моих функциях .then ударяется и возвращается, но не совсем уверен, где, когда моя угловая функция уже наступила. Я попробовал ваше решение, и у меня возникла следующая ошибка: UnhandledPromiseRejectionWarning: Отказ от необработанного обещания (id отклонения: 2): Ошибка: не удается установить заголовки после их отправки. –

+0

А, у вас уже есть res.json. Поэтому вам не требуется res.send. –

ответ

0

Можете ли вы попробовать что-то вроде этого?

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(result) { 
      res.json(result); 
      //or possibly res.send(result), depending on what indeed responds with 
     }) 
    }) 
0

Оказывается, я совсем забыл, что у меня было промежуточное программное обеспечение на месте, где, если пользователь не аутентификацией при выполнении поиска они были перенаправлены на страницу входа в систему. Поэтому я получил кучу html, возвращенную для этой страницы входа, а не моего json. Меня все еще смущает, почему мои точки останова в функции поиска когда-либо попадали, если я перенаправлялся до достижения этой функции.

 Смежные вопросы

  • Нет связанных вопросов^_^