我试图编辑信息并更新它,但是猫鼬的findByIdAndUpdate无法正常工作。包含{new:true},但仍显示原始的。在数据库中,信息也不会更新。控制台显示PUT / blogs /:id302。
路线如下:
//edit
router.get('/blogs/:id/edit', function (req, res) {
Blog.findById(req.params.id, function (err, blogFound) {
if(err){
console.log(err);
}else{
res.render("edit", {blog: blogFound});
}
});
});
//update
router.put('/blogs/:id', function (req, res) {
Blog.findByIdAndUpdate(req.params.id, req.body.blog, {new: true},function (err, blogUpdated) {
if(err){
console.log(err);
} else{
res.redirect('/blogs/' + req.params.id);
}
});
});
编辑表单如下:
<form class="ui form" action="/blogs/<%= blog._id %>?_method=PUT" method="POST">
<div class="field">
<label>Title</label>
<input type="text" name="title" value="<%= blog.title %>">
</div>
<div class="field">
<label>Image</label>
<input type="text" name="image" value="<%= blog.image %>">
</div>
<div class="field">
<label>Content</label>
<textarea name="description"><%= blog.description %></textarea>
</div>
<button class="ui primary button" type="submit">Submit</button>
</form>
答案 0 :(得分:0)
似乎req.body.blog
未定义。
您体内的标题,图像和说明未归类到blog
对象中,因此您应该撰写
const { title, image, description } = req.body;
Blog.findByIdAndUpdate(req.params.id, { title, image, description },
或类似的东西