Scrivere/aggiungere dati in un file JSON usando Node.js
Sto cercando di scrivere un file JSON usando il nodo dai dati del ciclo, ad es:
let jsonFile = require('jsonfile');
for (i = 0; i < 11; i++) {
jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}
outPut in loop.json è:
id :1 square : 1
ma voglio un file di output come questo (sotto) e anche se eseguo di nuovo quel codice dovrebbe aggiungere quel nuovo output come elementi nello stesso file JSON esistente:
{
"table":[
{
"Id ":1,
"square ":1
},
{
"Id ":2,
"square ":3
},
{
"Id ":3,
"square ":9
},
{
"Id ":4,
"square ":16
},
{
"Id ":5,
"square ":25
},
{
"Id ":6,
"square ":36
},
{
"Id ":7,
"square ":49
},
{
"Id ":8,
"square ":64
},
{
"Id ":9,
"square ":81
},
{
"Id ":10,
"square ":100
}
]
}
Voglio usare lo stesso file che ho creato la prima volta ma ogni volta che eseguo quel codice i nuovi elementi dovrebbero essere aggiunti in quello stesso file
const fs = require('fs');
let obj = {
table: []
};
fs.exists('myjsonfile.json', function(exists) {
if (exists) {
console.log("yes file exists");
fs.readFile('myjsonfile.json', function readFileCallback(err, data) {
if (err) {
console.log(err);
} else {
obj = JSON.parse(data);
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
} else {
console.log("file not exists");
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
171
3
Se questo file json non diventerà troppo grande nel corso del tempo si dovrebbe provare:
Creare un oggetto javascript con l'array di tabelle
Aggiungere alcuni dati come
Convertirlo da oggetto a stringa con stringify
usare fs per scrivere il file su disco
se vuoi aggiungerlo leggi il file json e riconvertilo in un oggetto
Questo funzionerà per dati grandi al massimo 100 MB in modo efficace. Oltre questo limite, si dovrebbe usare un motore di database.
AGGIORNARE:
Creare una funzione che restituisca la data corrente (anno+mese+giorno) come stringa. Create il file chiamato questa stringa + .json. il modulo fs ha una funzione che può controllare l'esistenza del file chiamata fs.stat(path, callback). Con questo, potete controllare se il file esiste. Se esiste, usate la funzione read, se non esiste, usate la funzione create. Usate la stringa della data come percorso perché il file sarà chiamato come la data odierna + .json. la callback conterrà un oggetto stats che sarà nullo se il file non esiste.
Per favore provate il seguente programma. Potresti aspettarti questo output.
dovresti leggere il file, ogni volta che vuoi aggiungere una nuova proprietà al json, e poi aggiungere le nuove proprietà