2014-11-29 5 views
3

배열의 객체 값에 어떻게 액세스 할 수 있습니까? 특히 "namecase"값? 모든 객체 값을 표시 할 수 있도록 배열에서 ejs 뷰를 반복합니다. 경로를 통해 데이터를 전달하고 있습니다.노드 경로의 json에서 배열의 객체 값에 액세스하기

//data.json 
{ 
    "works": [{ 
    "company" : "Company 1", 
    "projects": [{ 
     "namecase":"Projectname 1", 
     "desc":"This is a project with fairies.", 
     "img" : "/images/placeholder.jpg", 
     "url" : "/" 
     }, 
     { 
     "namecase":"Projectname 2", 
     "desc":"This is a project with monsters.", 
     "img" : "/images/placeholder.jpg", 
     "url" : "/" 
     }] 
     } 

    ] 

} 

//index.js route 

var appdata = require('../data.json'); 

router.get('/work', function(req, res) { 
    var myProjects = []; 
    appdata.works.forEach (function (item){ 
//this is where I pull object from json 
     myProjects = myProjects.concat(item.projects["namecase"]); 
    }); 
    res.render('work', { 
    title: 'Work', 
    projects: myProjects 
    }); 
}); 

///ejs 

    <% if (projects.length > 0) { %> 
    <% for (i=0; i<projects.length; i++) { %> 

    <span><%= projects["namecase"] %></span> 


    <% } 

답변

1

은 당신이 원하는 것은 당신이하고있는 것처럼 item.projects 아닌 namecase 키를 CONCAT하는 것입니다. 당신이 works 객체의 projects 자식 개체에있어 일단 또한, 당신은 같은, 사업을 반복하고 그 CONCAT로 할 것입니다 :

router.get('/work', function(req, res) { 
    var myProjects = []; 
    appdata.works.forEach(function(work) { 
    // Loop through each project to prevent undefined indices from being concatenated 
    work.projects.forEach(function(project) { 
     myProjects = myProjects.concat(project); 
    }); 
    }); 
    res.render('work', { 
    title: 'Work', 
    projects: myProjects 
    }); 
}); 

을 바로 프로젝트를 반환합니다 이렇게 :

[ { namecase: 'Projectname 1', 
    desc: 'This is a project with fairies.', 
    img: '/images/placeholder.jpg', 
    url: '/' }, 
    { namecase: 'Projectname 2', 
    desc: 'This is a project with monsters.', 
    img: '/images/placeholder.jpg', 
    url: '/' } ] 
관련 문제