簡體   English   中英

使用 nodejs 和 Mongoose 刪除請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM