Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice Node.JS sur implémentation CRUD

Sujet résolu
    28 mai 2022 à 21:26:22

    Bonjour tout le monde,

    Je suis en train de suivre le cours Passer au fullstack avec NodeJS, et je suis bloqué sur le quiz de la deuxième section, où l'on doit créer une API rest.

    Je suis bloqué à la première partie de l'exercice. Quand je clique sur test rout sur le port 3000, cela m'affiche une erreur Could not create product. Je suppose donc que la première route à paramétrer est celle de création de produit, la route post. Or cela ne fonctionne pas. J'ai une erreur 500 dans ma console mais je ne sais pas d'où elle vient. J'ai bien mis le middleware contre les CORS. J'ai modifié le Thing.js en Product.js. Je parviens bien à me connecter à MongoDB aussi. Voilà mon code :

    const express = require('express');
    const mongoose = require('mongoose');
    mongoose.connect('mongodb+srv://Neo78:XXXcluster0.5tasgje.mongodb.net/?retryWrites=true&w=majority',
    { useNewUrlParser: true,
        useUnifiedTopology: true })
    .then(() => console.log('Connexion à MongoDB réussie !'))
    .catch(() => console.log('Connexion à MongoDB échouée !'));
    
    const app = express();
    
    app.use((req, res, next) => {
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
        next();
      });
    
    app.use(express.json());
    
    app.post('/api/products', (req, res, next) => {
        const product = new Product({
            ...req.body
        });
        product.save()
            .then(() => res.status(201).json({ product }))
            .catch(error => res.status(400).json({ error }));
        });
    
    
    module.exports = app;

    Côté serveur je suis resté sur le même fichier que celui du cours mais je ne pense vraiment pas que l'erreur provienne de là.

    Merci beaucoup pour votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2022 à 13:08:41

      Bonjour, est-ce que tu as importé le model Product ? On ne voit pas le require du model dans ton fichier.

      Est-ce qu'il y à un message qui suit l'erreur 500 que tu as dans la console ?

      Tu peux peut-être essayer de faire un console.log de req.body voir si les données sont envoyé/reçu correctement.

      app.post('/api/products', (req, res, next) => {
      
      	console.log(req.body);
      
          const product = new Product({
              ...req.body
          });
      
          product.save()
              .then(() => res.status(201).json({ product }))
              .catch(error => res.status(400).json({ error }));
      
      });

      Au moment où tu envois ta  requête réseau il faut que tu passe le Content-Type sur application/json

      sinon le body-parser ne tentera pas de parsera le contenu de la requête en JSON.

      // côté client:
      
      fetch('/api/products', {
      	method: "POST",
          
          headers: {
          	"Content-Type": "application/json" // <- nécessaire pour que le body-parser comprennent qu'il faut parser le corps de la requête
          },
          
          body: JSON.stringify({
          	/* data ... */
          })
      })

      Si le problème persiste est-ce que tu peux nous poster la définition du model product, est-ce que tu l'as construit avec les schema de mongoose ?


      -
      Edité par SamuelGaborieau3 29 mai 2022 à 13:09:13

      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

        30 mai 2022 à 16:27:54

        Rolala que je suis étourdi parfois ....

        Si je n'importe pas le modèle ca ne risque pas de fonctionner effectivement ! Merci énormément pour cette remarque ça m'a débloqué sur cette partie, je peux passer à la suite ! Top ! ;)

        -
        Edité par CharlesLeibovici 30 mai 2022 à 16:28:17

        • Partager sur Facebook
        • Partager sur Twitter

        Exercice Node.JS sur implémentation CRUD

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown