使用Mongoose发送带EJS的DELETE请求

所以我已经做了一个Restful API的节点,一切正常,但我想添加EJS到它,所以我可以使用HTML&CSS,我实现了GET和POST就好了,但我绊倒DELETE。

这是我的代码在我的路由器删除

listRouter.delete('/:id', function(req, res) { req.list = list; req.list.remove(function(err){ if (err) res.status(500).send(err); else res.redirect('/') }); }); 

这是我的EJS删除

 <form method="DELETE" action="/:id"> <button type="submit">Delete</button> </form> 

这是我按下button时收到的错误

 { message: "Cast to ObjectId failed for value ":id" at path "_id"", name: "CastError", kind: "ObjectId", value: ":id", path: "_id" } 

事情是,虽然相同的确切代码工作,如果它被修改为JSON,所以我不知道是否其EJS或我的Javascript。

谢谢

我认为html5只是支持postget方法forms的属性

然而,在我的情况下,如果我不使用表单提交,这里的例子

例如在HTML或前端

 <a class="btn btn-raised btn-danger" href="/admin/dashboard/detele/<%= data.userId %>">Delete</a></td> <!-- The href needs to point at a link where data.userId is shown. Hence you need the = after <% for ejs to show the variable. --> 

在app.js的url删除

 app.get('/admin/dashboard/detele/:id', users.deleteUser); 

在express users.js中

 exports.deleteUser = function(req, res) { users.findOneAndRemove({ userId: req.params.id }, function(err, user) { if (err) throw err; console.log("Success"); }); res.redirect('/admin/dashboard'); } 

不要忘记为mongoose创buildmongo模型

 var skema = new mongo.Schema({ name: String, email: String, password: String, date: { type: Date, default: Date.now }, admin: Boolean }); var users = mongo.model('accounts', skema); 

我在这里使用EJS,希望对你有所帮助

  • 更有帮助的link1
  • 更有帮助的link2