#javascript #node.js #json
#язык JavaScript #node.js #json
Вопрос:
У меня есть серверная часть RestAPI, из которой я пытаюсь получить данные. Я использую NodeJS, но по какой-то причине данные загружаются в консоль в формате JSON, но когда я пытаюсь распечатать их на новой веб-странице, я получаю сообщение об ошибке
TypeError: /Final part 2/views/pages/letseat.ejs:11 9| lt;/divgt; 10| lt;!-- Right here it takes every value that we got back and then puts it into a list item --gt; gt;gt; 11| lt;% userlist.forEach(function(userlist) { %gt; 12| lt;ul class="list-group list-group-numbered"gt; 13| lt;input type="checkbox" name=lt;%= userlist.firstname %gt; 14| lt;li class="list-group-item"gt;lt;%= userlist['firstname'] %gt;, By: lt;%= userlist['lastname' ]%gt; lt;/ligt; Cannot read properties of undefined (reading 'forEach')
Но я получаю данные в формате JSON в терминале
data: [ { firstname: 'John', lastname: 'Boyle', numberofplaces: null, user_id: 1 }, { firstname: 'Ruben', lastname: 'Holt', numberofplaces: null, user_id: 3 }, { firstname: 'Tim', lastname: 'Diaz', numberofplaces: null, user_id: 4 }, { firstname: 'Tony', lastname: 'Santiago', numberofplaces: null, user_id: 2 }, { firstname: 'Scully', lastname: 'Smith', numberofplaces: null, user_id: 5 } ]
Функция, которую я использую для визуализации страницы, является
lt;% userlist.forEach(function(songlist) { %gt; lt;ul class="list-group list-group-numbered"gt; lt;input type="checkbox" name=lt;%= userlist.firstname %gt; lt;li class="list-group-item"gt;lt;%= userlist['firstname'] %gt;, By: lt;%= userlist['lastname' ]%gt; lt;/ligt; lt;/ulgt; lt;% }); %gt;
Наконец, это маршрут API
app.get('/process_form', function(req, res){ // create a variable to hold the username parsed from the request body // Now we will use the token wiht the name that the user entered // For this we will use the axios method to return the result axios.get('http://127.0.0.1:5000/api/getuser') .then((response)=gt;{ var userlist = response.data.results; console.log(userlist); res.render('pages/letseat', { userlist: userlist });
Пожалуйста, дайте мне несколько советов, я застрял на этом в течение 3 часов!!!
Комментарии:
1.
var userlist = response.data;
. Также в вашемforEach
вы должны использоватьsonglist.firstname
и т. Д. Нетuserlist.firstname
2. Я изменил эту переменную и просто обновил этот код, спасибо за помощь
Ответ №1:
Вы пытаетесь получить доступ к несуществующему свойству и возвращаете его, из-за чего оно не определено.
var userlist = response.data.results // ^^^^^^^
response.data
это уже массив, который вы хотели. Так что тебе нужно переодеться в
var userlist = response.data
Комментарии:
1. значит, я не должен получать результаты? Извините, мой профессор очень быстро пошел на урок, так что я немного сбит с толку. Поэтому я подумал, что когда я назначаю response.data.results, он возвращает объект json, который сохраняется в списке пользователей переменной
2. Вы не должны иметь доступа к собственности
results
. Его не существует, поэтому список пользователей в файле EJS не определен.3. Хорошо, это решило мою проблему, большое вам спасибо