/ / Node.js: Grave novos dados em um arquivo json existente - json, node.js

Node.js: Grave novos dados em um arquivo json existente - json, node.js

Estou tentando adicionar dados a um arquivo json existente(códigos abaixo). Quando eu acesso o locahost, a nova parte dos dados aparece, no entanto, quando eu verifico os dados (users.json), a nova parte dos dados (ou seja, user4) não está lá.

Alguém sabe o que há de errado com o código? Obrigado!

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)

})

EDITAR: Eu adicionei fs.writeFile(...) (códigos abaixo). Depois de executar o código, o único conteúdo do arquivo 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);
});
});
})

Respostas:

0 para resposta № 1

Para gravar em um arquivo, você deve usar 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 para resposta № 2

Eu passei dados para writeFile para que possa escrever as informações na variável de dados para 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);
});
});