Обработка ошибки с использованием модуля запроса - неопределенный объект - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь получить координаты местоположений, используя Mapbox API через модуль запроса в моем экспресс-приложении.URL запроса (конкретное местоположение) дается через HTML-форму.Он анализируется в URL, и API предоставляет всю информацию, включая координаты.Это выглядит так:

app.post("/", function(req, res){
    var location = req.body.location;
    var url = "https://api.mapbox.com/geocoding/v5/mapbox.places/" + location + ".json?access_token=MY_TOKEN"

    request(url, function(error, response, body) {
    var data = JSON.parse(body);
    var coordinates = data.features[0].geometry.coordinates

Все работает хорошо, если я пытаюсь найти любое место, которое API может найти и обработать.Но когда я попытался вставить некоторые случайные символы через форму, приложение вылетает, выдавая ошибку «TypeError: Невозможно прочитать свойство« geometry »из undefined».Console.log (data) показывает, что элемент features объекта data представляет собой пустой массив [].Я пытался обработать ошибку, показывая сообщение и перенаправляя его, когда данные не определены, например:

if (!data.features) {
    req.flash("error", "Location not found, please try again.")
    res.redirect("/")}

Я в начале своего пути по программированию, и это мой первый запрос, поэтому я очень ценю любую помощь, спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

Извините, на выходных не было Если data.features - пустой массив, он не пройдет тест (!data.features). Вы можете попробовать что-то вроде

if(Array.isArray(data.features) && data.features.length>0){
 //code here 
}else{
    req.flash("error", "Location not found, please try again.")
    res.redirect("/")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...