Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passez au Full stack avec Node.js, Express et....

Quiz : Savez-vous implémenter le CRUD ?

    7 novembre 2020 à 16:23:42

    Le problème doit se situer ailleurs, car j'ai exactement le même bloc de code et ça fonctionne.
    • Partager sur Facebook
    • Partager sur Twitter

    « Ce n'est pas le plus fort de l'espèce qui survit, ni le plus intelligent. C'est celui qui sait le mieux s'adapter au changement » ! Charles Darwin.

      10 novembre 2020 à 11:57:30 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


      Nabil MECILI

        19 novembre 2020 à 10:15:29

        QuRO a écrit:

        Bonjour à tous, j'y vais de mon petit problème perso...

        Mon APi fonctionne pour tous sauf pour la route PUT. Je ne comprends absolument pas pourquoi :

        app.put('/api/products/:id', (req, res, next) => {
            Product.updateOne({ _id: req.params.id }, { ...req.body, _id: req.params.id })
              .then(() => res.status(200).json({ message: 'Modified!'}))
              .catch(error => res.status(400).json({ error }));
          });


        j'ai le simple message d'erreur sur le frontend me disant que ça ne fonctionne pas et que je dois implémenter utiliser une route PUT...

        -
        Edité par QuRO 6 novembre 2020 à 15:57:28

        Moi aussi j'avais le même problème, j'ai hésité à faire sauter la base de données :lol:. Blague à part, dans la base de données j'ai supprimé la collection "products", puis j'ai rafraîchit la page de l'activité, et ça a marché. En espérant que ca marche pour ceux qui ont eu ce problème. 



        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2020 à 16:23:51 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


            24 décembre 2020 à 21:05:17

            Bonjour à tous, je suis sur le quizz2 et je suis bloqué sur le lancement de la partie frontend.

            J'ai suivi ces étapes :

            • Cloner le dossier GIT
            • Le renommer frontend
            • ensuite dans le Terminal:
            • cd frontend
              npm install
              npm start
            Mais l'écran ne se lance pas comme indiqué...

            edit : j'avais un problème de version sur node.js le pb a été corrigé en faisant un npm install -force

            -
            Edité par AhmedKaba 25 décembre 2020 à 22:44:57

            • Partager sur Facebook
            • Partager sur Twitter
              4 janvier 2021 à 10:52:48

              T'as surement un problème avec le clone git !

              Télécharge git : https://git-scm.com/

              • Partager sur Facebook
              • Partager sur Twitter
                17 mars 2021 à 14:32:15

                Bonjour à tous, pour ma part, pour lancer le front, j'ai procédé comme suit :

                1: J'ai cloné le répertoire git dans un dossier parent (que j'avais créé). Cela a eu pour effet de créer le dossier fullstack-activity

                2: J'ai créé un dossier backend dans mon dossier parent

                3: J'ai exécuté la commande suivante à partir du dossier backend :

                npm install

                4: J'ai exécuté la commande suivante à partir du dossier fullstack-activity :

                npm start

                Et le frontend à pu s'afficher à l'adresse suivante : http://localhost:8081

                • Partager sur Facebook
                • Partager sur Twitter
                  11 avril 2021 à 16:37:46

                  Merci aux différentes réponses, j'aurais galéré beaucoup plus longtemps sinon..

                  Je suis sur Macbook pro (juste pour l'info concernant mon 1er problème)

                  Voici les différents problèmes rencontrés:

                  - Au lancement du projet frontend impossible de le faire démarrer avec "npm start" ! Très énervant. Heureusement, une répose sur stackoverflow et puis dans ce fil m'a aidé. J'ai dû démarrer le projet par la commande:

                  node node_modules/.bin/http-server -a localhost -p 8081

                  - Sur les routes là par contre c'est ma faute, j'avais oublié tous les / devant "/api/products".

                  - Et le problème bloquant principal était comme d'autres concernant les retours, m'étant inspiré des règles de l'exercice j'avais mis 

                  app.get('/api/products', (req, res, next) => {
                      Product.find()
                      .then( products => res.status(200).json({ product: Product[]}))
                      .catch( error => res.status(400).json({ error}))
                  });

                  au lieu de: 

                  app.get('/api/products', (req, res, next) => {
                      Product.find()
                      .then( products => res.status(200).json({ products }))
                      .catch( error => res.status(400).json({ error}))
                  });

                  Sinon concernant BodyParser, il ne me semble pas utile, quelqu'un peut confimer? En tout cas il me paraît déprécié et express le remplace, non?


                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 juillet 2021 à 23:32:51

                    Tchiééééééé!....mince, je galerais dessus depuis. Pq est-ce que les solutions sont aussi simples?!........Merci à tous
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 septembre 2021 à 17:40:43

                      Bonjour à tous,

                      Je pense  avoir trouvé la bonne solution, tout correspond à ce qui est demandé pourtant j'ai toujours le message d'erreur

                      ERROR: Could not GET created product with ID ['id généré aléatoirement]!

                      je ne comprend pas, en allant a la bonne adresse j'ai pourtant la réponse sous la forme { product: Product }

                      Peut être le problème vient-il du fait que je ne recupere pas les informations du post lors du test d'ecriture mais je ne vois pas comment recuperer les donnees qui n'ont pas l'air d'etre dans la requete.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 octobre 2021 à 14:09:31

                        Bonjour à tous, 

                        je suis bloqué sur le QUIZZ et je ne comprends pas mon erreur. Pouvez-vous m'aider ?

                        Quand je clique sur testée route l'ajout se fait bien dans mango Pruducts mais j'ai cette erreur :

                        (node:6788) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
                            at new NodeError (internal/errors.js:322:7)
                            at ServerResponse.setHeader (_http_outgoing.js:561:11)
                            at ServerResponse.header (C:\quiz_II_fullstack\backend\node_modules\express\lib\response.js:771:10)
                            at ServerResponse.send (C:\quiz_II_fullstack\backend\node_modules\express\lib\response.js:170:12)
                            at ServerResponse.json (C:\quiz_II_fullstack\backend\node_modules\express\lib\response.js:267:15)
                            at C:\quiz_II_fullstack\backend\app.js:33:41
                            at processTicksAndRejections (internal/process/task_queues.js:95:5)
                        (Use `node --trace-warnings ...` to show where the warning was created)
                        (node:6788) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
                        (node:6788) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


                        app.js :

                        const express = require('express');
                        const bodyParser = require('body-parser');
                        const app = express();
                        const mongoose = require('mongoose');
                        const Product = require('./models/product');
                        
                        mongoose.connect('mongodb+srv://*********:<***********>@cluster0.ukvq4.mongodb.net/Cluster0?retryWrites=true&w=majority',
                            { useNewUrlParser: true,
                              useUnifiedTopology: true
                            })
                          .then(() => console.log('Connexion à MongoDB réussie !'))
                          .catch(() => console.log('Connexion à MongoDB échouée !'));
                        
                        app.use((req, res, next) =>{
                            // accéder à notre API depuis n'importe quelle origine ('*')
                            res.setHeader('Access-Control-Allow-Origin', '*');
                            // ajouter les headers mentionnés aux requêtes envoyées vers notre API (Origin , X-Requested-With , etc.) ;
                            res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
                            // envoyer des requêtes avec les méthodes mentionnées ( GET ,POST , etc.).
                            res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
                            next();
                        })
                        
                        app.use(bodyParser.json());
                        
                        app.post('/api/products', (req, res, next) => {
                            delete req.body._id;
                            const product = new Product({
                                ...req.body
                            });
                            product.save()
                                .then(product => res.status(201).json({ product }))
                                .catch(error => res.status(400).json({ error }));
                            next(); 
                        });
                        
                        app.get('/api/products/:id', (req, res, next) => {
                            Product.findOne({ _id: req.params.id })
                            .then(product => res.status(200).json({ product }))
                            .catch(error => res.status(404).json({ error }));
                        });
                        
                        app.put('/api/products/:id', (req, res, next) => {
                            Product.updateOne({ _id: req.params.id }, { ...req.body, _id: req.params.id })
                            .then(() => res.status(200).json({ message: 'Modified !'}))
                            .catch(error => res.status(400).json({ error }));
                        });
                        
                        app.delete('/api/products/:id', (req, res, next) => {
                            Product.deleteOne({ _id: req.params.id })
                            .then(() => res.status(200).json({ message: 'Delete !'}))
                            .catch(error => res.status(400).json({ error }));
                        });
                        app.use('/api/products', (req, res, next) => {
                            Product.find()
                            .then(products => res.status(200).json({ products}))
                            .catch(error => res.status(404).json({ error }));
                            
                        });
                        module.exports = app;


                        merci d'avance pour vos reponses.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 octobre 2021 à 20:53:30

                          Bonjour à tous! 

                          Je n'arrive pas à comprendre mon erreur,  je me suis grandement aidé des corrections et messages de discussion et j'ai appliqué la proposition du code de "seize D" mais mon chemin s'arrête en cours...

                          quelqu'un aurait-il une piste?...merci   :ange::ange::ange:

                          :ange:

                          • Partager sur Facebook
                          • Partager sur Twitter
                            Il y a environ 5 heures


                            Vérifiez c'est ligne dans votre app.js


                            app.use((req, res, next) => {
                              res.setHeader('Access-Control-Allow-Origin', '*'); // accéder à notre API depuis n'importe quelle origine
                              res.setHeader('Access-Control-Allow-Headers',
                                'Origin, X-Requested-With , Content, Accept, Content-Type, Authorization'); // ajouter les headers mentionnés aux requêtes envoyées vers notre API
                              res.setHeader('Access-Control-Allow-Methods',
                                'GET, POST, PUT, DELETE, PATCH, OPTIONS'); // envoyer des requêtes avec les méthodes mentionnées
                              next();
                            });


                            FélB a écrit:

                            Bonjour à tous! 

                            Je n'arrive pas à comprendre mon erreur,  je me suis grandement aidé des corrections et messages de discussion et j'ai appliqué la proposition du code de "seize D" mais mon chemin s'arrête en cours...

                            quelqu'un aurait-il une piste?...merci   :ange::ange::ange:

                            :ange:



                            • Partager sur Facebook
                            • Partager sur Twitter

                            Passez au Full stack avec Node.js, Express et....

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown