Bonsoir!
Je débute en nodeJs et je dois réaliser une API.
J'ai un fichier JSON qui contient des Nouvelles. Je dois pouvoir renvoyer une nouvelle par Id, insérer une nouvelle, supprimer une nouvelle ou mettre à jour une nouvelle.
Pour l'instant j'ai réussi à faire GetById.
Je bloque sur POST(pour insérer une nouvelle dans mon JSON)

ci-joint le code de mon newsModels :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
'use strict'
 
const fs = require('fs')
const path = require('path')
 
 
//task object constructor
var Nouvelle = function(nouvelle) {
 
    this.Id_nouvelle = nouvelle.Id_nouvelle;
    this.Nom_nouvelle = nouvelle.Nom_nouvelle;
    this.Description = nouvelle.Description;
    this.Date_generation = nouvelle.Date_generation;
 
};
 
 
Nouvelle.postNouvelle = function postNouvelle(newsToAdd, res) {
 
    let nouvellePath = path.join(__dirname, '../../data/nouvelles.json')
 
    fs.readFile(nouvellePath, (err, data) => {
        if (err) {
            res.sendStatus(500)
        }
        let nouvelles = JSON.parse(data)
 
        let findeNews = nouvelles.find((obj) => obj.Id_nouvelle === newsToAdd.Id_nouvelle)
        if (!findeNews) {
 
            //data[newsToAdd] = JSON.parse(data)
            fs.writeFile(nouvellePath, JSON.stringify(newsToAdd,null, 4), (error) => {
                if(error){
                  res.sendStatus(500)
                console.log('news added')
              }
            })
            res.sendStatus(201)
        }
    }
    )
}
 
 
Nouvelle.getNouvelle = function getNouvelle(Id_nouvelle, callback) {
 
    let nouvellePath = path.join(__dirname, '../../data/nouvelles.json') //à modifietr il faut chercher à definir une variable à portée global poura être utilisée dant tous les fichiers
    fs.readFile(nouvellePath, (err, data) => {
        if (err) {
            callback(err)
            return
        }
        let nouvelles = JSON.parse(data)
        let findeNews = nouvelles.find((obj) => obj.Id_nouvelle === Id_nouvelle)
        if (findeNews) {
            console.log(findeNews)
            callback(null, findeNews)
        }
    })
 
}
 
module.exports = Nouvelle
et newsController :
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
'use strict'
 
//let express = require('express')
let Nouvelle = require('../Models/newsModel')
 
 
exports.recuperer_une_nouvelle = function(req, res) {
 
    Nouvelle.getNouvelle(req.params.Id_nouvelle, (err, nouvelle) => {
        if (err) {
            res.send(err)
        }
 
        res.json(nouvelle.Description)
    })
 
}
 
exports.inserer_une_nouvelle = function(req, res) {
 
    var newsToAdd = new Nouvelle(req.body);
 
    Nouvelle.postNouvelle(newsToAdd, function(err, nouvelle){
        if (err) {
            res.send(err)
        }
        else{
          res.json(nouvelle)
        }
    })
}
newsModel.jsnewsController.js


voilà à quoi ressemble mon JSON :
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
[
 
          {
            "Id_nouvelle": "1",
            "Nom_nouvelle":"météo du jour",
            "Description": "le jeudi 24 octobre il fait 16°",
            "Date_generation": "24/10/2019"
          },
          {
            "Id_nouvelle": "2",
            "Nom_nouvelle":"Londre ce matin!",
            "Description": "les 32 morts dans le camion sont de nationnalité chinoise",
            "Date_generation": ""
          },
          {
            "Id_nouvelle": "3",
            "Nom_nouvelle":"Vacances scolaires!",
            "Description": "Cette année il n'y aura pas de vacances pour les master 2!!!",
            "Date_generation": "01/09/2019"
          }
 
  ]
Merciii d'avance!!!