我是Express和MongoDB的新手。我在Node.js中創建了一個小型Web應用程序,並使用Express.js和Mongoose。我可以成功創建一個用戶並讓用戶登錄,但我無法刪除用戶的帳戶。用Mongoose,Express刪除一個用戶
我在我的路由文件夾中有一個user.js文件,這是我在寫代碼註冊,登錄,刪除等的位置。這是GitHub上的項目鏈接(https://github.com/NicholasGati/shopping-cart-2)。刪除用戶帳戶的按鈕位於views/user/edit.hbs中。我把按鈕放在一個表格中。當我點擊按鈕時,用戶不會被刪除,並且出於某種原因我被重定向到「/」。注意:我的routes/user.js文件中的'/:id'變成'/ 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」而不是method =「delete」,並在我的routes/user.js文件中將route.delete()更改爲route.post()。然後,我用csrf標記在表單中添加了一個隱藏字段,它工作正常!感謝您帶領我朝着正確的方向前進。 –
歡迎@NicholasGati。我想你也可以使用'delete'方法。 –
如果您覺得答案可以幫助您解決問題,那麼最好是進行投票。 –