#node.js #express #ejs
#node.js #выразить #ejs
Вопрос:
Я получаю ошибку ссылки при попытке получить доступ к следующему API formula one API
Ошибка, которую я получаю, заключается в том, что я не могу получить доступ к MRData. Я использовал редактор JSON, и я уверен, что у меня есть правильный путь. Ниже приведен запрос post.
app.get('/about', function(req, res){
res.render('about', {standings: null});
});
app.post('/about', function(req, res){
var year = req.body.Year;
var url = `http://ergast.com/api/f1/${year}/driverstandings.json?callback=`
request(url, function (err, response, body){
if(err){
res.render('about', {standings: null, error: 'Error, please try again'});
} else {
let standings = JSON.parse(body)
if(standings.MRData === undefined) {
res.render('about', {standings: null, error: 'Error, please try again'});
} else {
let firstName = MRData.StandingsTable.StandingsLists[0].DriverStandings[0].Driver.givenName
let standingsText = `The winner of the formula 1 championship in the year ${MRData.StandingsTable.season} is ${firstName}`;
res.render('about', {standings: standingsText, error: null});
}
}
});
});
Буду признателен за любую помощь. Спасибо, что изучили это.
Комментарии:
1. я не думаю, что вы можете выполнять обратные вызовы jsonp в node.js как этот приятель. я имею в виду, что вы, вероятно, могли бы
eval()
отредактировать ответ, но я бы счел это опасным. лучше использовать библиотеку, которую кто-то уже создал и протестировал для этой цели. возможно, вы захотите изучить возможность использования следующей библиотеки github.com/then/then-jsonp2. Что именно представляет собой сообщение об ошибке? В какой строке это происходит в приведенном выше фрагменте?
3. это сообщение об ошибке, которое я получаю
/Users/briankaty1/Desktop/Udemy_WebCourse/weather_api/index.js:77 let firstName = MRData.StandingsTable.StandingsLists[0].DriverStandings[0].Driver.givenName
4. Приведенный ниже ответ указывает на ту же ошибку. Это исправит это.
Ответ №1:
Я могу придумать 1 синтаксическую ошибку и 1 необязательный сценарий.
Синтаксическая ошибка:
В else
части, на которую вы ссылаетесь напрямую MRData
, тогда как вы должны ссылаться на нее с помощью standings.MRData
. Как для firstName
, так и standingsText
let firstName = standings.MRData.StandingsTable.StandingsLists[0].DriverStandings[0].Driver.givenName
let standingsText = `The winner of the formula 1 championship in the year ${standings.MRData.StandingsTable.season} is ${firstName}`;
Другой сценарий req.body.Year
может быть пустым, и вы используете его, поэтому запись URL-адреса в консоль может привести к решению.
Комментарии:
1. downvoter: Я не вижу, в чем проблема, я ясно вижу, что есть синтаксические ошибки, и я указал на них. Даже если проблема кроется в другом месте, это исправление должно было быть сделано, иначе любой ответ привел бы к «нет, не работает, все еще ошибка ссылки»