2014-04-16 7 views
11

루프 처리가 필요한 JSON 데이터가 있습니다. 데이터는 아래와 같은 구성되어있다 "people.json"라는 제목의 파일에 있습니다JSON 객체 배열을 반복하는 방법은 무엇입니까?

[{"firstname":"John","lastname":"Smith","age":"40"},{"firstname":"Bill","lastname":"Jones","age":"40"}, ...] 

나는 (내가 몽구스를 사용하고 있습니다)이 파일에있는 각 개체를 읽고 저장하고 싶습니다. 여기 내가 지금까지 가지고있는 것입니다 :

var fs = require('fs'); 
var Person = require('../models/people'); 

fs.readFile('./people.json', 'utf8', function (err,data) { 
    var i; 
    for(i = 0; i < data.length; i++) { 
     var newPerson = new Person(); 
     newPerson.firstname = data[i].firstname; 
     newPerson.lastname = data[i].lastname; 
     newPerson.age = data[i].age; 
     newPerson.save(function (err) {}); 
    } 
}); 

나는 이것을 작동시킬 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

루프가 정상적으로 보입니다. 오류가없고 콜백에 실제로 데이터가 있는지 확인 했습니까? –

+0

[mongoimport] (http://docs.mongodb.org/manual/reference/program/mongoimport/)에서 확인해보십시오. 이렇게하는 것이 더 좋습니다. –

답변

25
fs.readFile('./people.json', 'utf8', function (err,data) { 
    data = JSON.parse(data); // you missed that... 
    for(var i = 0; i < data.length; i++) { 
    var newPerson = new Person(); 
    newPerson.firstname = data[i].firstname; 
    newPerson.lastname = data[i].lastname; 
    newPerson.age = data[i].age; 
    newPerson.save(function (err) {}); 
    } 
}); 
8

ES6 for..of도 그렇게 할 수 있습니다.

fs.readFile('./people.json', 'utf8', function (err,data) { 
    for(var item of data) { 
    console.log('item: ', [item.firstname, ...]); 
    } 
}); 
관련 문제