請幫忙。我是 node.js 的新手。我使用 mongoose 洗掉 mongodb 上的記錄
這是我的記錄
MongoDB Enterprise > db.contacts.find().toArray();
[
{
"_id" : ObjectId("6187ebca4691bb4a3eeeb91d"),
"nama" : "herahadi",
"notlp" : "084234234234",
"email" : "[email protected]",
"__v" : 0
},
{
"_id" : ObjectId("618861aaeeb7aeaf202a1890"),
"nama" : "izam",
"notlp" : "08533523232323",
"email" : "[email protected]",
"__v" : 0
}
]
我的 app.js
var methodOverride = require('method-override');
.....
app.delete('/contact',async(req,res)=>{
console.log('req.body.nama=' req.body.nama);
Contact.deleteOne({ nama: req.body.nama }).then((result)=>{
console.log(result);
res.redirect('/contact');
});
這是呼叫洗掉的頁面
<form method="POST" action="/contact?_method=DELETE" class="d-inline">
<input type="hidden" name="nama" value="<%= contact.nama %> ">
如果我在控制臺日志上運行我的專案,我會得到這個結果
req.body.nama=izam
{ deletedCount: 0 }
有人可以告訴我出了什么問題嗎?
uj5u.com熱心網友回復:
如果你想回傳洗掉值的結果,那么你應該使用 Mongoose | findOneAndDelete() 函式。
findOneAndDelete() 函式用于查找匹配的檔案,將其洗掉,并將找到的檔案(如果有)傳遞給回呼。
https://www.geeksforgeeks.org/mongoose-findoneanddelete-function/
uj5u.com熱心網友回復:
如@Naveem 所述,我通過更改為 findOneAndDelete() 解決了我的問題。但也必須將 req.body.nama 更改為 JSON.stringify(req.body.nama) 否則它仍然無法洗掉記錄。
所以這是我的最終代碼
app.delete('/contact',(req,res)=>{
console.log('req.body.nama=' req.body.nama);
// const contact = await Contact.findOne({nama:req.body.nama});
Contact.findOneAndDelete({ nama: JSON.stringify(req.body.nama) }).then((result)=>{
console.log(result);
res.redirect('/contact');
});
uj5u.com熱心網友回復:
請檢查代碼和附加的螢屏截圖以獲取結果。貓鼬查詢的終端結果截圖,完整的用戶結果第一張圖片 https://i.stack.imgur.com/SrGyL.png
用于查找和洗掉第二張影像的 Nodejs 代碼腳本 https://i.stack.imgur.com/IWN9p.png
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353818.html
下一篇:JSON中位置0處的意外標記“
