[英]DELETE Request with nodejs and Mongoose
我正在努力使用 mongoose 從我的數據庫集合中刪除一行。控制台顯示刪除成功(因為我處理了錯誤),但是當我檢查我的數據庫時,該行仍然在這里。 我通過發帖請求成功添加了一個成員,但我無法刪除它。 我懷疑我的路由文件或我的 hbs 文件。 這是代碼:
Index.js(路由部分)
app.get('/delete',(req,res) => res.render('delete', {
title:'Member App',
}));
路線/members.js
// Delete member : DELETE
router.get("/delete", (req,res)=>{
console.log(req.params.id);
Member.deleteOne({ _id: req.params.id }, function(err,data) {
if (!err) {
console.log(data);
console.log("member successfully deleted")
}
else {
console.log("error")
}
});
res.redirect("/");
});
刪除.hbs
<h1 class = "text-center mb-3">{{title}}</h1>
<form action="/delete" method ="DELETE" class="mb-4">
<div class="form-group">
<label for="Id">Id</label>
<input type="Id" name="Id" class ="form-control">
</div>
<input type="submit" value ="Delete member" class="btn">
</form>
控制台:(似乎我的回調中的數據未定義)
Connected to mongoDB
undefined
{ n: 0, ok: 1, deletedCount: 0 }
member successfully deleted
您的輸入類型標簽錯誤。
<input type="Id" name="Id" class ="form-control">
輸入中沒有“Id”類型(請參閱輸入類型值)
您沒有使用正確的字段
req.params.id
已使用,但我在您的請求中沒有看到任何參數。
你只有身體充滿了 Id 所以為了使用它,你應該打電話:
req.body.Id
首先,沒有錯誤並不能保證刪除數據庫中的記錄。 所以在這種情況下更喜歡使用findOneAndRemove
方法。
第二個res.redirect("/");
將在記錄刪除完成之前調用,因此應將重定向移動到回調 function 中,例如:
Member.findOneAndRemove({ _id: req.params.id }, function(err, member) {
if (!err && member) {
console.log(member);
console.log("member successfully deleted")
}
else {
console.log("error")
}
res.redirect("/");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.