IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Ajouter des éléments JSON dans un fichier et ne pas écraser les anciennes données


Sujet :

NodeJS

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Points : 28
    Points
    28
    Par défaut Ajouter des éléments JSON dans un fichier et ne pas écraser les anciennes données
    Bonjour,


    Je suis en train d'écrire du JSON et de l'ajouter dans un fichier

    Mais mon problème est qu'il écrase l'ancienne valeur.

    Lorsque j'exécute le script, je dois ajouter la nouvelle valeur au fichier sans écraser.

    Je vais récupérer le tableau JSON du fichier, l'ajouter en Javascript, puis écrire le tout dans un fichier

    J'utilise uniquement des variables qui peuvent changer.

    Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    var obj = {
     table: []
    };
     
    obj.table.push({"executionDate":date,
        "issueID":key,
        "priority":{
        "jira": priority, 
        "computed":score1
        },
        "expectedValue":{
            "jira": expected, 
            "computed":score2
        }
    })
     
    var json = JSON.stringify(obj);
     
     
    fs.writeFile('myjsonfile.json', json, 'utf8', function (err) {
        if (err) console.error(err)
        });
     
    fs.readFile('myjsonfile.json', 'utf8', function readFileCallback(err, data){
        if (err){
            console.log(err);
        } else {
        obj = JSON.parse(data); //now it an object
        obj.table.push({"executionDate":date,
        "issueID":key,
        "priority":{
            "jira": priority, 
            "computed":score1
        },
        "expectedValue":{
            "jira": expected, 
            "computed":score2
            }
     
        }); //add some data
        json = JSON.stringify(obj); //convert it back to json
        fs.writeFile('myjsonfile.json', json, 'utf8', function (err) {
            if (err) console.error(err)
        }); // write it back 
    }});
    Résultat actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    [{
        "executionDate": 25 / 03 / 2019,
        "issueID": 1,
        "priority": {
            "jira": important,
            "computed": 10
        },
        "expectedValue": {
            "jira": expected,
            "computed": 20
        }
    },
    {
        "executionDate": 25 / 03 / 2019,
        "issueID": 1,
        "priority": {
            "jira": important,
            "computed": 10
        },
        "expectedValue": {
            "jira": expected,
            "computed": 20
        }
    }]

    Résultat souhaité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    [{
        "executionDate": 25 / 03 / 2019,
        "issueID": 1,
        "priority": {
            "jira": important,
            "computed": 10
        },
        "expectedValue": {
            "jira": expected,
            "computed": 20
        }
    },
    {
        "executionDate": 26 / 03 / 2019,
        "issueID": 2,
        "priority": {
            "jira": important,
            "computed": 20
        },
        "expectedValue": {
            "jira": expected,
            "computed": 30
        }
    }]

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    fs ? C'est du node !

    Je crois qu'il faut utiliser : fs.open(path, flags[, mode], callback), avec le flag : 'a+' - Open file for reading and appending. The file is created if it does not exist.

    A vérifier avec les nodistes.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Effectivement c'est du node

    Enfaite mon soucis c'est qu'il m'écrase l'ancienne donnée et update avec la nouvelle donnée ... (overwrite)

    Mon but est qu'à chaque fois que le code s’exécute, ma structure JSON qui est crée par défaut avec des variables, doit être ajouté dans un tableau et dans le fichier

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Citation Envoyé par marcilles Voir le message
    Enfaite mon soucis c'est qu'il m'écrase l'ancienne donnée et update avec la nouvelle donnée ... (overwrite)
    Ben apparemment il n'écrase pas il ajoute un objet identique...

    Tu fais deux fois cela :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    obj.table.push({"executionDate":date,
        "issueID":key,
        "priority":{
        "jira": priority, 
        "computed":score1
        },
        "expectedValue":{
            "jira": expected, 
            "computed":score2
        }
    })

    Alors si entre temps les variables : date, key, priority, score1... ne changent pas ben c'est normal que tu te retrouves avec deux fois le même objet...

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2016, 20h19
  2. Réponses: 0
    Dernier message: 02/02/2015, 17h26
  3. Réponses: 0
    Dernier message: 17/05/2013, 11h06
  4. Réponses: 2
    Dernier message: 22/09/2010, 10h01
  5. [XML] [Débutant]Comment ajouter des balise html dans un fichier XML
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/09/2010, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo