【发布时间】:2015-11-29 16:46:22
【问题描述】:
使用 express 和 mongoose/mongo 创建一个 todo 应用。领域模型:作者有提醒。
在我的app.js:
var bodyParser = require('body-parser')
var methodOverride = require('method-override')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}))
app.use(methodOverride('_method'))
我在views/authors/edit.hbs 中使用车把的表单:
<h2>Edit {{name}}</h2>
<form action="/authors/{{_id}}" method="post">
<input type="hidden" name="_method" value="put">
<label>Name:</label>
<input type="text" name="name">
<input type="submit">
</form>
我的编辑视图路由和更新作者的请求:
app.get("/authors/:id/edit", function(req, res){
AuthorModel.findById(req.params.id, function(err, docs){
res.render("authors/edit", docs)
})
})
app.put("/authors/:id", function(req, res){
console.log("updating")
AuthorModel.findById(req.params.id, function(err, docs){
docs.name = req.body.name
docs.save(function(err){
if(!err){
res.redirect("authors/" + req.params.id)
}
})
})
})
当我检查开发工具中的元素时,我看到了我需要查看的所有内容,但是当我去提交时,给了我错误 CANNOT POST。创建功能工作正常,所以我的第一个想法是方法覆盖不起作用。如果我将 put 更改为 POST,则一切正常。
如果有帮助,请链接到包含此 app 的存储库
【问题讨论】:
标签: mongodb express middleware overriding