猫鼬 findByIdAndUpdate 不起作用。 new: true 包括
Posted
技术标签:
【中文标题】猫鼬 findByIdAndUpdate 不起作用。 new: true 包括【英文标题】:Mongoose findByIdAndUpdate not working. new: true included猫鼬 findByIdAndUpdate 不起作用。 new: true 包括 【发布时间】: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>
【问题讨论】:
我也有同样的问题。如果您插入一个新文档然后更改它,就会发生这种情况。如果您先获取新文档然后对其进行更改,则更新将起作用。 【参考方案1】:似乎req.body.blog
未定义。
你的正文中有标题、图像和描述,没有分组在blog
对象中,所以你应该写
const title, image, description = req.body;
Blog.findByIdAndUpdate(req.params.id, title, image, description ,
或者像这样
【讨论】:
有效!非常感谢。我已经被困了好几个小时了。以上是关于猫鼬 findByIdAndUpdate 不起作用。 new: true 包括的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose / Express findByIdAndUpdate 不起作用
猫鼬 TTL partialFilterExpression 不起作用?