Robienie tego asynchronicznie jest dość łatwe. Jest to szczególnie przydatne, jeśli obawiasz się blokowania wątku (prawdopodobnie).
const fs = require('fs');
const fileName = './file.json';
const file = require(fileName);
file.key = "new value";
fs.writeFile(fileName, JSON.stringify(file), function writeJSON(err) {
if (err) return console.log(err);
console.log(JSON.stringify(file));
console.log('writing to ' + fileName);
});
Jedynym zastrzeżeniem jest to, że json jest zapisywany do pliku w jednej linii i nie jest upiększany. dawny:
{
"key": "value"
}
będzie...
{"key": "value"}
Aby tego uniknąć, po prostu dodaj te dwa dodatkowe argumenty do JSON.stringify
JSON.stringify(file, null, 2)
null- reprezentuje funkcję zamiennika. (w tym przypadku nie chcemy zmieniać procesu)
2 - reprezentuje spacje do wcięcia.