2012-11-25 22 views
9

nodejを学習し始めたばかりです。私は現在ソケットで作業しており、チャットプログラムを作っています。Nodejsがファイルにjsonを書き込む

チャット全体をjsonファイルに保存します。現在、私のコードはこれです:

socket.on('chat', function (data) { 
    message = {user : data.message.user, message : data.message.message}; 
    chat_room.sockets.emit('chat', {message: message}); 

    jsonString = JSON.stringify(message); 

    fs.appendFile("public/chat.json", jsonString, function(err) { 
     if(err) { 
      console.log(err); 
     } else { 
      console.log("The file was saved!"); 
     } 
    }); 

    }); 

これは現在完璧ですが、ファイルに書かれているjsonが間違っています。

これは、メッセージがトリガされたときに、上記のコードが呼び出された私に間違ったJSON

{"user":"niraj","message":"hw r u?"}{"user":"ntechi","message":"hello"}{"user":"ntechi","message":"hw r u?"}

を与えました。私は、JSONが

{"user":"awd","message":"hw r u?","user":"ntechi","message":"hello","user":"ntechi","message":"hw r u?"}

この形式で誰もが、この中で私を助けることができますしたいですか?事前に感謝します

答えて

11

メッセージを取得するたびにファイルにJSONを追加するため、誤ったJSONの最初のセットが作成されます。

JSONの2番目のセットも間違っています - それぞれのプロパティ名は一意でなければなりません。

おそらくあなたが何かしたい:JSONとしてファイル

  • 解析データから

    1. データを読み取り、変数に割り当てる:あなたが使用する必要がロジックがある場合は

      [ 
      {"user":"niraj","message":"hw r u?"}, 
      {"user":"ntechi","message":"hello"}, 
      {"user":"ntechi","message":"hw r u?"} 
      ] 
      

    2. エラーが発生した場合は、その変数に空の配列を割り当てます。
    3. push配列
    4. の終わりへのメッセージオブジェクトは、配列
    5. は、新しい文字列で、それは私が今ではそれを文字列として格納し、JSONファイルを読んでいます を働いた
  • +0

    おかげで、ファイルを上書きする文字列化'concat'を使って2つの変数をつないでjson全体をそのファイルに書き出します。 –

    関連する問題