0
votes

Impossible d'obtenir: ID Itinot FindByID () Express

Je ne peux pas obtenir des données (avec insomnie) de ma collection avec un identifiant spécifique . Ci-dessous est un exemple d'URL de demande.

http: // localhost: 5000 / todos / 5dd295a49d5d7a0b7a399bbe

Mais quand je http: // localhost: 5000 / TODOS / . Sans le ID , je peux afficher toutes les données à l'intérieur de la collection.

Voici mon code:

  • TODOS ROUTE: xxx
    • SERVER.JS: xxx

5 commentaires

Êtes-vous capable de console.log (req.params.id) ?


J'ai essayé mais je ne sais pas où je peux vérifier la console.log


Vous pouvez le voir dans la ligne de terminal / commande que votre serveur est activé. Êtes-vous également en mesure d'exécuter les autres actions qui nécessitent un ID ? Tels que supprimer et mettre à jour?


Il n'y a rien affiché sur la console.log où le serveur est en cours d'exécution et d'autres actions telles que Mettre à jour et Supprimer ne fonctionnent pas ASWELL


Voir la réponse de Klaycon. Vous définissez votre /: id dans votre / Ajouter itinéraire.


3 Réponses :


0
votes

Votre configuration d'itinéraire est située dans le rappel de votre / Ajouter itinéraire. Déplacez-les vers la même portée que votre autre installation d'itinéraire et cela devrait fonctionner comme prévu.


3 commentaires

Ok je comprends, mais newtodo.save () où il devrait être? En dehors de l'ajout ou à l'intérieur quelque chose?


newtodo.save () ne peut être que lorsque newtodo est défini. Je suppose que cela irait simplement après avoir défini newtodo .


MERCI! Je peux voir plus clairement maintenant. J'espère que cette réponse peut aider d'autres débutants comme moi



-1
votes

Vous devez ajouter }) code> à la fin de votre itinéraire / Ajouter code> afin que les autres itinéraires ne soient pas définis dans / Ajouter Code>. Ensuite, faites newtodo.save () ... code> à la fin de celui-ci. Ensuite, supprimez un }) code> avant module.exports = routeur; code>. Voir ci-dessous.

const router = require('express').Router();
let Todo = require('../models/todo.model');

router.route('/').get((req, res) => {
  Todo.find()
    .then(todos => res.json(todos))
    .catch(err => res.status(400).json('Error: ' + err));
});

router.route('/add').post((req, res) => {
  const title = req.body.title;
  const description = req.body.description;
  const date = Date.parse(req.body.date);

  const newTodo = new Todo({
    title,
    description,
    date
  });

newTodo.save()
    .then(() => res.json('Todo added!'))
    .catch(err => res.status(400).json('Error: ' + err));
})

  router.route('/:id').get((req, res) => {
    Todo.findById(req.params.id)
      .then(todo => res.json(todo))
      .catch(err => res.status(400).json('The fuck is the Error: ' + err));
  });

  router.route('/:id').delete((req, res) => {
    Todo.findByIdAndDelete(req.params.id)
      .then(() => res.json('Todo deleted.'))
      .catch(err => res.status(400).json('Error: ' + err));
  });

  router.route('/update/:id').post((req, res) => {
    Todo.findById(req.params.id)
      .then(todo => {
        todo.username = req.body.username;
        todo.description = req.body.description;
        todo.duration = Number(req.body.duration);
        todo.date = Date.parse(req.body.date);

        todo.save()
          .then(() => res.json('Todo updated!'))
          .catch(err => res.status(400).json('Error: ' + err));
      })
      .catch(err => res.status(400).json('Error: ' + err));
  });

module.exports = router;


2 commentaires

Cela provoquera une erreur car il y a un } supplémentaire); maintenant juste avant la ligne d'exportation. Aucun support n'a besoin d'être ajouté, il suffit de déplacer.


Je suis confus pourquoi cela a été évité comme il est correct.



0
votes

J'ai eu une situation analogue. Dans mon fichier de route, l'une de mes itinéraires d'obtention déclenchait "impossible d'obtenir" erreur forte>. Une autre solution possible est juste de placer toutes les demandes d'obtention fortes> dans un endroit strong>, puis toutes les demandes postales (la commande compte). Dans mon cas, l'amélioration de la situation et de l'erreur disparaissait.

  router.route('/:id').get((req, res) => {
  Todo.findById(req.params.id)
  .then(todo => res.json(todo))
  .catch(err => res.status(400).json('The fuck is the Error: ' + err));
});


0 commentaires