2016-06-22 12 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は、私の目標は、新しいデータでフロントエンドからこのコールを作ることであり、それは上記のデータは、3つの呼び出しの後でなければなりません

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

のように追加取得したいです。

答えて

1

問題は、ファイルの内容を読み込み、配列にプッシュして、新しいオブジェクトを配列に追加することです。 file.write代わりのfile.append

すなわち代わりに

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

使用

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

これを行うには、任意の "クリーン" な方法を使用しますか? –

+0

'json'は単に永続化を望んでいて、db(mongo、json-file-store)に格納しようとする場合や、' .csv'形式を使用して簡単に追加レコードを追加できる多くのパフォーマンスのペナルティ。これを参照してくださいhttp://stackoverflow.com/questions/24011343/nodejs-append-inside-json-file-in-array-format – shadowfox

関連する問題