2016-12-09 6 views
2

Я пытаюсь обрабатывать ошибки в интерфейсе на основе ответа, полученного от моего экспресс-сервера. Я делаю запрос POST от переднего конца, который отправляет данные на экспресс-сервер. Эта конечная точка (называемая ниже /endpoint) затем отправляет запрос в Spotify API и возвращает список песен. Если это по какой-то причине не удается, я хочу сообщить пользователю о начале. Я думал, что код, который я написал ниже, верен, однако он не показывает сообщение об ошибке, когда запрос Express Spotify не работает., отображающее сообщение об ошибке после вызова API для узла Node express

Может ли кто-нибудь заметить что-то не так с кодом ниже?

Экспресс App

app.post('/endpoint', function(req, res){ 
    var options = { 
     url: url, 
     method: 'POST', 
     json: true 
    } 

    request-promise(options).then(function(body){ 
     console.log('All good!'); 
    }).catch(function(err) { 
     if(err) { 
     console.log(err); 
     res.json(err);  
     } 
    }); 
} 

JQuery код

$.ajax({ 
    type: 'POST', 
    url: 'http://localhost:3000/endpoint', 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function (err) { 
     console.log(err); 
    } 
}); 
+0

он получает вход в терминал консоли, но консоль –

+0

не браузера я думаю, что его из-за 'res.json'. Я думаю, мне нужно использовать 'res.send (err)' вместо этого. похоже, что он работает с этим –

ответ

1

Вам просто нужно добавить состояние ошибки в ответ. От экспресс API Response Express 4.x

res.status(500).json({ error: 'message' }); 
+0

, я думаю, что это связано с 'res.json'. я думаю, что мне нужно использовать 'res.send (err)' вместо –

+0

@phantom Если вы используете 'res.send (err)' ваш интерфейс JS получит его в обратном вызове 'success', но вам нужно продолжить его через обратный вызов' error' Я думаю, – MysterX

+0

ах нормально, вы можете быть правы, так как я обрабатываю ошибку в моем методе 'success' –