【发布时间】:2020-09-05 12:12:52
【问题描述】:
我尝试编辑信息并更新它,但猫鼬 findByIdAndUpdate 不起作用。 {new: true} 被包括在内,但它仍然显示原始的。在数据库中,信息也没有更新。控制台显示 PUT /blogs/:id 302。
路线如下:
//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>
【问题讨论】:
-
我也有同样的问题。如果您插入一个新文档然后更改它,就会发生这种情况。如果您先获取新文档然后对其进行更改,则更新将起作用。
标签: javascript node.js mongodb express mongoose