所以我已经用节点创建了一个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>
这是我按下按钮时收到的错误
{
message: "Cast to ObjectId failed for value ":id" at path "_id"",
name: "CastError",
kind: "ObjectId",
value: ":id",
path: "_id"
}
虽然为JSON修改了同样精确的代码,但我不知道它的EJS或我的Javascript。
由于
答案 0 :(得分:1)
我认为html5只支持方法表单属性
中的post
和get
然而,在我的情况下,如果我不使用表单提交,这里的例子
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. -->
在url delete的app.js中
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');
}
不要忘记为猫鼬创建mongo模型
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,希望它可以帮助你
答案 1 :(得分:0)
放弃使用 method-override 可以解决问题
我使用了不同的网址来解决这个问题。
<form action="/quake/forum/update/<%= post._id %>?_method=put" method="post">
和
<form action="/quake/forum/delete/<%= post._id %>?_method=delete" method="post" class="d-inline">
和路由器
主路由器
app.use('/quake/forum',forumRouter); //this is for just making sure explaination clear
子路由器(forumRouter)
router.post('/delete/:id', function (req, res) {
和
router.post('/update/:id', function (req, res) {