使用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只是支持post
并get
方法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