2012-11-25 43 views
9

Tôi vừa mới bắt đầu học các nút. Tôi hiện đang làm việc với ổ cắm và thực hiện chương trình trò chuyện.Nodejs viết json vào một tập tin

Tôi muốn lưu toàn bộ trò chuyện vào tệp json. Mã hiện tại của tôi là:

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

    }); 

Điều này hiện đang hoạt động hoàn hảo, nhưng phần ghi trong tệp sai.

này đã cho tôi một json sai

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

Đoạn mã trên được gọi khi thông điệp được kích hoạt. Tôi muốn json theo định dạng này

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

bất cứ ai có thể giúp tôi trong việc này? Cảm ơn trước

Trả lời

11

Bộ JSON sai đầu tiên được tạo vì bạn đang thêm một đoạn JSON vào một tệp mỗi khi bạn nhận được thư.

Tập thứ hai của JSON cũng sai - mỗi tên thuộc tính phải là duy nhất.

Có lẽ bạn muốn một cái gì đó như:

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

Trong trường hợp này, logic bạn cần phải sử dụng là:

  1. đọc dữ liệu từ tập tin
  2. dữ liệu Parse như JSON và gán cho một biến
  3. Trong trường hợp xảy ra lỗi, chỉ định một mảng trống cho biến đó
  4. push đối tượng nhắn vào cuối mảng
  5. stringify mảng
  6. Ghi đè lên tập tin với chuỗi mới
+0

nhờ nó làm việc Tôi bây giờ đọc file json, lưu trữ nó dưới dạng chuỗi trong một biến và bằng cách sử dụng 'concat' tôi gắn hai biến và viết toàn bộ json vào tệp đó. –

Các vấn đề liên quan