2012-11-25 16 views
9

Ho appena iniziato a imparare il nodojs. Attualmente sto lavorando con i socket e ho creato un programma di chat.Nodejs scrive json in un file

Voglio salvare l'intera chat in un file JSON. Attualmente il mio codice è questo:

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!"); 
     } 
    }); 

    }); 

Questo sta attualmente lavorando perfetto, ma il JSON che è scritto nel file non è corretto.

Questo mi ha dato un JSON sbagliata

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

Il codice di cui sopra viene chiamata quando viene attivato il messaggio. Voglio JSON in questo formato

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

qualcuno mi può aiutare in questo? Grazie in anticipo

risposta

11

Il primo set di JSON errato viene creato perché si aggiunge un pezzo di JSON a un file ogni volta che si riceve un messaggio.

Anche il secondo set di JSON è errato: ogni nome di proprietà deve essere univoco.

Presumibilmente si desidera qualcosa di simile:

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

In questo caso la logica è necessario utilizzare è:

  1. leggere i dati dal file di
  2. dati Parse come JSON e assegnare ad una variabile
  3. In caso di errore, assegnare un array vuoto a tale variabile
  4. push l'oggetto messaggio sulla fine della matrice
  5. stringa i dell'array
  6. sovrascrivere il file con la nuova stringa
+0

grazie ha funzionato Ora sto leggendo il file JSON, immagazzinarla come una stringa in un variabile e usando 'concat' sto allegando due variabili e scrivendo interi json a quel file. –