无法使用DELETE或POST请求成功删除猫鼬数据库中的文档

我正在尝试通过admin.ejs页面删除猫鼬数据库中的雇员。

到目前为止,我已经尝试使用方法覆盖处理普通的POST请求和DELETE,但均无效。

//尝试不使用方法替代

// Schema //

const empSchema = {
name: String,number: String
  };

  const Employee = mongoose.model("Employee",empSchema);

// admin.ejs //

 <form action="/deleteEmp" method="POST" >
  <div>
    <label>Name</label>
    <input type="text" name="name">
  </div>
  <button class="btn btn-primary" type="submit">Delete Employee</button>
</form>

// app.js //

app.post("/deleteEmp",function(req,res) {
Employee.findOneAndDelete({name: req.params.name},function(err,result) {

if(!err) {
    console.log('User Deleted');
    res.redirect("admin");
} else {
    console.log(err);
}
});

});

//尝试使用方法覆盖//

// admin.ejs //

   <form method="POST" action="/deleteEmp?_method=DELETE">
  <div>
    <label>ID</label>
    <input type="text" name="id">
  </div>
  <button class="btn btn-primary" type="submit">Delete Employee</button>
   </form>

// app.js //

  app.delete("/deleteEmp",res) {
  Employee.findOneAndDelete({name: req.params.name},result) 
  {

   if(!err) {
    console.log('User Deleted');
    res.redirect("admin");
   } else {
    console.log(err);
  }
  });

  });

在我尝试不使用方法重写的情况下,如果将其设置为POST方法而不是DELETE,但是它将被删除,则它将通过。如果该方法设置为DELETE,则返回无法获取/ deleteEMP

我在方法重写方面没有任何成功,所以我想知道我是否缺少某些东西?

lhp1231 回答:无法使用DELETE或POST请求成功删除猫鼬数据库中的文档

“无法获取/ deleteEMP”表示您发送了GET请求。尝试从Postman或XMLHttpRequest(Ajax)发送DELETE请求。 HTML表单仅支持GET和POST作为HTTP请求方法。

,

尽管您可以通过POST请求执行删除操作,但建议为每种情况使用正确的http VERB(GET,POST,PUT,DELETE ..)。因此,在您的情况下,我将使用AJAX删除请求来删除文档。
顺便说一句,您的第一个选项(action =“ / deleteEmp” method =“ POST”)不起作用的原因是控制器中的错误。使用name: req.body.name代替name: req.params.name。您发送的数据位于请求对象的body中。

本文链接:https://www.f2er.com/3163912.html

大家都在问