Supprimer le document à l'aide de findOneAndRemove Mangouste
Je reçois cette erreur lorsque vous essayez de supprimer un document à partir de la base de données:
Ne peut pas OBTENIR /supprimer/532fa5e56f885c7fec5223b1fds
Comment puis-je supprimer le document?
app.js
//Delete
app.del('/delete/:id', routes.delete_offer);
routes/index.js
//Delete
exports.delete_offer = function (req,res){
Offer.findOneAndRemove({'_id' : req.params.id}, function (err,offer){
res.redirect('/newsfeed');
});
};
vues/tableau de bord.jade
- each offer in offers
div.offer.row
a(href="/offer/" + offer._id)
div.columns
div.sell_type
p=offer.type
div.small-8.columns.sell_info
p.sell_price="$" + offer.fixedPrice() + " "
p.sell_location="@ " + offer.location + " ›"
div.small-4.columns.sell_pic
p=offer.user_id
a.delete(href="/delete/" + offer._id)="Delete Offer"
- N'est pas le message d'erreur assez? Votre itinéraire nécessite un SUPPRIMER verbe. Vous essayez d'utiliser GET. Voir ici pour un début.
- assurez-vous que vous êtes en fait l'affichage de l'itinéraire. si vous utilisez le navigateur pour naviguer sur ce parcours, il va faire une requête get. utiliser le facteur de vérifier l'api.
Vous devez vous connecter pour publier un commentaire.
Le verbe HTTP à l'aide de votre n'est pas correct
utilisation
app.delete("/delete/:id", routes.delete_offer);
Je pense que cela devrait fonctionner. Car je ne pense pas qu'il y est pas de del méthode dans le verbe HTTP pour express.js cadre il est principalement GET, POST, PUT, DELETE et à quelques autres.
Cannot GET /delete/532fa5e56f885c7fec5223b1fds
Vous aurez également l'utilisation de SUPPRIMER au lieu d'OBTENIR où que vous soyez à l'appeler à partir de.Si vous avez un itinéraire mis en place pour une SUPPRIMER verbe dans un cadre Reposant sens. Vous ne semblez pas à l'appeler de cette façon ou de l'utiliser dans une bonne voie.
Vous demande doit vraiment être de la manipulation de ce comme un RESTE demande, et la question du statut et le contenu de la réponse appropriée à ce qui s'est passé. Maintenant, vous re-diriger vers une autre URL. Ce n'est pas la bonne approche. Mais Si vous ne comprenez pas de REPOS, puis le faire de cette façon, mais le changement de votre route à utiliser OBTENIR à la place.
Pour ce qu'elle vaut, une fois que vous avez trié vos données d'utilisation et de tests, éventuellement à l'aide de curl ou similaires, comme l'a été visible. Alors peut-être envisager d'utiliser
.findByIdAndRemove()
à la place.Puis vérifier effectivement la réponse est ce que vous attendez avant tout transfert ou l'envoi d'un valide ou d'erreur de réponse. Qui est ce que vous devriez faire.
Si vous utilisez de la mangouste. Vous pouvez fixer le fichier routes/index.js.
Avis si vous utilisez la Mangouste
findByIdAndRemove
fonction pour récupérer et supprimer l'objet de laModel
.