106 votes

Comment mettre à jour une valeur dans un fichier json et l'enregistrer via node.js ?

Comment mettre à jour une valeur dans un fichier json et l'enregistrer via node.js ? J'ai le contenu du fichier :

var file_content = fs.readFileSync(filename);
var content = JSON.parse(file_content);
var val1 = content.val1;

Maintenant, je veux changer la valeur de val1 et l'enregistrer dans le fichier.

2voto

ΔO 'delta zero' Points 2528

Je recommande vivement de ne pas utiliser les fonctions synchrones (bloquantes), car ils tiennent d'autres opérations simultanées . Au lieu de cela, utilisez la méthode asynchrone fs.promises :

const fs = require('fs').promises

const setValue = (fn, value) => 
  fs.readFile(fn)
    .then(body => JSON.parse(body))
    .then(json => {
      // manipulate your data here
      json.value = value
      return json
    })
    .then(json => JSON.stringify(json))
    .then(body => fs.writeFile(fn, body))
    .catch(error => console.warn(error))

Rappelez-vous que setValue renvoie une promesse en attente, vous devrez utiliser la fonction Fonction .then ou, dans le cadre de fonctions asynchrones, la attendre l'opérateur .

// await operator
await setValue('temp.json', 1)           // save "value": 1
await setValue('temp.json', 2)           // then "value": 2
await setValue('temp.json', 3)           // then "value": 3

// then-sequence
setValue('temp.json', 1)                 // save "value": 1
  .then(() => setValue('temp.json', 2))  // then save "value": 2
  .then(() => setValue('temp.json', 3))  // then save "value": 3

2voto

Gaurav Mogha Points 294

Sauvegarder les données après l'achèvement de la tâche

fs.readFile("./sample.json", 'utf8', function readFileCallback(err, data) {
        if (err) {
          console.log(err);
        } else {
          fs.writeFile("./sample.json", JSON.stringify(result), 'utf8', err => {
            if (err) throw err;
            console.log('File has been saved!');
          });
        }
      });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X