Я новичок в Express и MongoDB. Я создал небольшое веб-приложение в Node.js и использую Express.js и Mongoose. Я могу успешно создать пользователя и войти в систему, но у меня возникают проблемы с тем, что пользователь может удалить свою учетную запись.Удалить пользователя с помощью Mongoose, Express
У меня есть файл user.js в папке маршрутов, где я пишу код для регистрации, подписания, удаления и т. Д. Вот ссылка на проект на GitHub (https://github.com/NicholasGati/shopping-cart-2). Кнопка для удаления учетной записи пользователя находится в представлении/user/edit.hbs. Я положил кнопку в форме. Когда я нажимаю кнопку, пользователь не удаляется, и я по какой-то причине перенаправляется на «/». Примечание: «/: id» в моих маршрутах/файл user.js становится «/ user /: id».
Вот код в файле маршрутов/user.js для удаления метода:
router.delete('/:id', isLoggedIn, (req, res, next) => {
User.findOneAndRemove({_id: req.params.id}, (err) => {
if (err) {
req.flash("error", err);
return res.redirect("/user/edit");
}
req.flash("success", "Your account has been deleted.");
req.logout();
return res.redirect("/shop/coffee");
});
});
Вот форма просмотров/пользователь/edit.hbs:
<form action="/user/{{user.id}}" method="delete">
<div class="form-group">
<button type="submit" class="btn btn-danger">Delete Account</button>
</div>
</form>
Кроме того, здесь функция isLoggedIn:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect("/");
}
Большое вам спасибо Saeid! Я подумал о первом моменте проверки метода формы и метода method = "post" вместо метода = "удалить" и изменил route.delete() на route.post() в файле routes/user.js. Затем я добавил скрытое поле в форме с токеном csrf, и оно сработало! Спасибо, что вел меня в правильном направлении. –
Ваш прием @ Николас Гати. Я думаю, вы также можете использовать метод 'delete'. –
И если вы чувствуете, что ответ поможет вам решить вашу проблему, лучше будет голосовать. –