2016-06-22 3 views
0

여러 번 요청되지만 동일한 코드를 찾을 수 없어서 광산과 그 출력을 추가하고 있습니다. 이것을 봐주세요.NODE를 사용하여 JSON 형식으로 데이터 저장

app.put('/hotel/save', function(req, res) { 

    var fileToSave = 'savedHotelDetails.txt'; 
    res.send('Booking Id '+guid()); 
    res.status(200); 
    var arr = []; 
    var k; 
    fs.readFile(fileToSave, 'utf-8', function(err, data) { 
     if(err) { 
      k = []; 
     } else { 
      arr.push(data); 
      var obj = JSON.parse(req.query.params); 
      console.log(obj); 
      k = arr.push(obj); 
      //JSON.stringify(k); 
      //console.log(arr); 
      fs.appendFile(fileToSave, JSON.stringify(arr),'utf8'); 
     } 
    }) 
}); 

이 나에게

["",{"hotelId":"IM50003"}]["[\"\",{\"hotelId\":\"IM50003\"}]",{"hotelId":"IB50002"}]["[\"\",{\"hotelId\":\"IM50003\"}][\"[\\\"\\\",{\\\"hotelId\\\":\\\"IM50003\\\"}]\",{\"hotelId\":\"IB50002\"}]",{"hotelId":"IB50002"}] 

출력의 첫째 이유는 이런 종류의 같은 출력을 제공? 는 Secondaly, 내 목표는 새 데이터로 프론트 엔드에서이 전화를하고 위의 데이터는 세 가지 통화 후해야

[{"ID": "IM5004"},{"ID": "IM5005"},{"ID": "IM5006"}] 

같은 추가 싶어하는 것입니다.

답변

1

문제는 파일 내용을 읽고 배열로 밀어 넣고 배열에 새 개체를 추가하는 것입니다. 이 작업을 수행하는 즉, 대신

fs.appendFile(fileToSave, JSON.stringify(arr),'utf8'); 

사용

fs.write(fileToSave, JSON.stringify(arr),someCallbackfn) 
+0

모든 "깨끗한"방법의 file.write 대신

file.append의 사용? –

+0

'json'은 단지 직렬화 기술입니다. 당신이 원한다면 db (mongo, json-file-store)에 저장하거나'.csv' 형식을 사용하여 간단히 추가 레코드를 추가 할 수 있습니다 많은 성능 저하. http://stackoverflow.com/questions/24011343/nodejs-append-inside-json-file-in-array-format을 참조하십시오. – shadowfox

관련 문제