Je ne peux pas Mais quand je http: // localhost: 5000 / TODOS / . Sans le Voici mon code: P> obtenir des données code> (avec insomnie) de ma collection avec un identifiant
spécifique code>. Ci-dessous est un exemple d'URL de demande.
http: // localhost: 5000 / todos / 5dd295a49d5d7a0b7a399bbe p> p>
ID code>, je peux afficher toutes les données à l'intérieur de la collection. P>
3 Réponses :
Votre configuration d'itinéraire code> code> est située dans le rappel de votre / Ajouter code> 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. P>
Ok je comprends, mais newtodo.save () où il devrait être? En dehors de l'ajout ou à l'intérieur quelque chose?
newtodo.save () code> ne peut être que lorsque
newtodo code> est défini. Je suppose que cela irait simplement après avoir défini
newtodo code>.
MERCI! Je peux voir plus clairement maintenant. J'espère que cette réponse peut aider d'autres débutants comme moi
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;
Cela provoquera une erreur car il y a un } supplémentaire); code> 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.
J'ai eu une situation analogue. Dans mon fichier de route, l'une de mes itinéraires d'obtention déclenchait 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));
});
Êtes-vous capable de
console.log (req.params.id) code>?
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 code>? 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 code> dans votre
/ Ajouter code> itinéraire.