2016-02-18 2 views
0

Я нашел, как я могу перебирать объект в express js. Я могу записать информацию из json-файла, но как только я делаю цикл, он продолжает говорить, что его не определено.итерация по вложенным объектам в экспресс

Что мне здесь не хватает, я хочу, чтобы он их перечислил. хотя это будет то, что у меня будет h2 с именем top 40, и он перечислит весь объект из Year.top2011.top40.id.top01

любая помощь здесь. не

мой индекс в маршрутизации

lista = JSON.parse(data); 
console.log(lista); 

res.render('index', { 
    lista: lista 
}); 

мой индекс в виду

<% JSON.parse(lista).forEach(function(item) { %> 
<%- item.Year.top2011.top40.id.top01 %> 
<% }; %> 

мой JSON файл

{ 
"Year": { 
"top2011": { 
    "top40": { 
    "id": { 
     "top01": { 
     "album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b", 
     "artist_namn": "Adele", 
     "song": "Rolling In The Deep", 
     "spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX", 
     "youtube": "http://youtu.be/rYEDA3JcQqw" 
     }, 
     "top02": { 
     "album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92", 
     "artist_namn": "LMFAO", 
     "song": "Party Rock Anthem", 
     "spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way", 
     "youtube": "http://youtu.be/KQ6zr6kCPj8" 
     } 
    } 
    } 
} 
    } 
} 
+0

Удалось ли вам в конце? вы попробовали подчеркнуть '_.each()'? – EMX

ответ

0

lista больше не является строка JSON, но объект JS. Эта строка: JSON.parse(lista).forEach(function(item) не будет работать. Вам нужно перебрать более lista: lista.forEach(function(item) {})

+0

Он все еще говорит, что «lista» не является функцией –

0

Прежде всего, эта структура может быть улучшена: · Почему бы не сохранить записи из top40 в массиве?
Эта структура содержит top40_entries, каждый из которых в качестве объекта внутри top40ключамассива

{"Year": { 
    "2011": { 
     "top40": [ 
      { 
      "pos": "top01", 
      "album_cover": "http://o.scdn.co/image/830a22646bc38f72df95ec98e3ab6bb19aa6074b", 
      "artist_namn": "Adele", 
      "song": "Rolling In The Deep", 
      "spotify": "http://open.spotify.com/track/7h8Ud480Fm4ReUVxgFF9ZX", 
      "youtube": "http://youtu.be/rYEDA3JcQqw" 
      }, 
      { 
      "pos": "top02", 
      "album_cover": "http://o.scdn.co/image/215c999786e8319a09b7af87a970c2bdb6747c92", 
      "artist_namn": "LMFAO", 
      "song": "Party Rock Anthem", 
      "spotify": "http://open.spotify.com/track/1CNJyTUh56oj3OCZOZ5way", 
      "youtube": "http://youtu.be/KQ6zr6kCPj8" 
      } 
     ] 
    } 
}} 

Я хотел бы использовать for петлю (при необходимости):

var top40_2011 = lista.Year.2011.top40; //get the array 
for(var i=0; i<top40_2011.length; i++){ 
    /* Access the values using the keys : */ 
     //console.log(top40_2011[i].pos); 
     //console.log(top40_2011[i].artist_namn); 
     //console.log(top40_2011[i].song); 
} 

Примечание: Запомнить что массивы начинаются с 0, поэтому top40 будет от [0] до [39];

+0

Okej, мне нравится json-структура alot (пойдет с этим), но я добавил код цикла for в моем представлении index.js (я использовал экспресс-генератор). Мне тяжело разобраться в этом. В моей голове «lista» - объект, который я могу повторить, но когда я делаю, как всегда, с объектом, чтобы повторять их, я просто не буду работать. Скоро горько –

+0

@CyrusZei вы попробовали console.log(), чтобы проверить браузер своих клиентов? Я бы использовал сценарий jQuery, который взаимодействует с вашим представлением для загрузки динамического содержимого html, загруженного из JSON – EMX

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