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

Félix Bacon

25 octobre 2021 à 16:54:55


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
26 novembre 2021 à 9:23:27

Bonjour à tous !

J'ai un pb mes routes semblent ok, vu que lorsque je clic sur TEST ROUTES, tout passe correctement, au niveau réseau et  l'objet se crée correctement en BDD, pourtant l'erreur 

ERROR: Could not create new product!


m'est retournée en front....qqn a eu ce problème?

Merci d'avance

-
Edité par AuziasVincent 26 novembre 2021 à 9:26:30

  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2022 à 18:08:56

Bonjour a tous

Meilleurs voeux 2022

Et bien ca fonctionne nickel

-
Edité par SeBzH29 19 janvier 2022 à 18:10:22

  • Partager sur Facebook
  • Partager sur Twitter
27 septembre 2022 à 8:32:28

Salut tout le monde, j'ai bien galéré aussi, surtout sur la première route Post, donc je donne des petites astuces :

Testez votre route post en mettant :

console.log({product});

à la fin de votre route.

Il faut que la console renvoie :

Listening on port 3000
Connexion à MongoDB réussie !
{
  product: {
    name: 'My test product',
    description: 'Some stuff',
    price: 40000,
    inStock: true,
    _id: new ObjectId("6332971e4f913a3c2f12152f")
  }
}

Pour les autres routes, le console.log fait crasher le server.

Perso, mon problème était que l'objet renvoyé n'était pas au format json.

Bon courage !

  • Partager sur Facebook
  • Partager sur Twitter
Cordialement, moi
13 février 2023 à 2:16:29

Seize D a écrit:

L'application demande à ce que la route GET all products retourne products au pluriel :

.then(products => res.status(200).json({ products }))

alors que la route GET individual product doit retourner product au singulier :

.then(product => res.status(200).json({ product }))

C'est ce qui m'a causé problème et qui semble causer problème à beaucoup de monde ^^

Pour ce qui est du spoil, je ne sais pas quelles sont les règles du forum à ce sujet ?
J'imagine qu'il vaut mieux que la réponse soit accessible, surtout pour une histoire de singulier/pluriel :-°

Tu as raison en tout cas, je vais cacher le mot secret qui n'est pas utile.

-
Edité par Seize D 8 avril 2020 à 23:36:28

Merci beaucoup moi j'avais ce probleme mais maintenant ça marche bien Alhamdoulilah

-
Edité par BachirSylla 13 février 2023 à 2:18:16

  • Partager sur Facebook
  • Partager sur Twitter