2016-02-11 3 views
0

Я пытаюсь добавить данные в существующий json-файл (коды ниже). Когда я обращаюсь к locahost, появляется новый фрагмент данных, однако, когда я проверяю данные (users.json), новая часть данных (то есть user4) не существует.Node.js: записывать новые данные в существующий файл json

Кто-нибудь знает, что не так с кодом? Спасибо!

var express = require('express'); 
var app = express(); 
var fs = require("fs"); 

var user = { 
    "user4" : { 
     "name" : "mohit", 
     "password" : "password4", 
     "profession" : "teacher", 
     "id": 4 
    } 
} 

app.get('/addUser', function (req, res) { 
    // First read existing users. 
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) { 
     data = JSON.parse(data); 
     data["user4"] = user["user4"]; 
     console.log(data); 
     res.end(JSON.stringify(data)); 
    }); 
}) 

var server = app.listen(8081, function() { 

    var host = server.address().address 
    var port = server.address().port 
    console.log("Example app listening at http://%s:%s", host, port) 

}) 

EDIT: Я добавил fs.writeFile(...) (коды ниже). После выполнения кода, только содержимое файла uers.json является: utf8

var express = require('express'); 
var app = express(); 
var fs = require("fs"); 

var user = { 
    "user4" : { 
     "name" : "mohit", 
     "password" : "password4", 
     "profession" : "teacher", 
     "id": 4 
    } 
} 

app.get('/addUser', function (req, res) { 
    // First read existing users. 
    fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) { 
     data = JSON.parse(data); 
     data["user4"] = user["user4"]; 
     console.log(data); 
//  res.end(JSON.stringify(data)); 
     data = JSON.stringify(data); 
     fs.writeFile(__dirname+"/"+"users.json", "utf8", function(err,data){ 
      if (err){ 
       console.log(err); 
      }; 
      res.end(data); 
     }); 
    }); 
}) 
+0

Я не вижу какой-либо код записи в файл (что-то вроде 'fs.writeFile (...) '). – Kenney

+0

Не соответствует ли строка ниже файлу? 'data [" user4 "] = user [" user4 "];' – Dxml

+0

Нет, он обновляет содержимое переменной 'data'. – Kenney

ответ

0

Для записи в файл, который вы должны использовать fs.writeFile.

fs.writeFile(__dirname + "/" + "users.json", user["user4"], 'utf8', function() 
{ 
    // do anything here you want to do after writing the data to the file 
}); 
0

Я передал данные в writeFile так, что он может записать информацию в переменных данных в формат JSON

fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) { 
    data = JSON.parse(data); 
    data["user4"] = user["user4"]; 
    console.log(data); 
    data = JSON.stringify(data); 

    fs.writeFile(__dirname + "/" + "users.json", data , 'utf8', function(err,data) { 
     if (err){ 
      console.log(err); 
     }; 
     res.end(data); 
    }); 
}); 
Смежные вопросы