【发布时间】:2019-06-14 00:11:45
【问题描述】:
我正在关注一个教程,但它似乎很旧,看起来事情已经改变了,我有一个编辑页面试图编辑 mongodb 中的现有数据,但它就是不想工作。
这是教程中的人所做的:
app.put("/blogs/:id",function(req,res){
Blog.findByIdAndUpdate(req.params.id,req.body.blog,function(err,updatedBlog){
if (err) {
res.redirect("/blogs");
}else {
res.redirect("/blogs/" + req.params.id);
}
});
});
从那时起,我尝试使用 findOneAndUpdate(),但我似乎无法解决这个问题,我尝试将 .id 替换为 ._id,如下所示:
app.put("/blogs/:id",function(req,res){
Blog.findByIdAndUpdate(req.params._id,req.body,{new:true},function(err,updatedBlog){
if(err){
console.log(err);
}else{
console.log("Blog updated");
res.redirect("/blogs/"+req.params._id);
}
});
});
它会转到 else 语句,因为我得到了 console.log 但它仍然没有更新任何东西
【问题讨论】:
-
而不是
{new:true}你可以试试 {upsert:true} 吗?您还可以发布 req.body 包含的内容吗? -
我添加了 console.log(req.body);到 else ,它似乎正在获取我在控制台日志返回的页面输入中编辑的信息 { blog: { title: 'Test Blog1111', image: 'farm8.staticflickr.com/7250/7775397718_c676fbeb4b.jpg', body: 'Hello this is a博客文章! } } 这是我编辑的,但在我去刷新页面后它恢复正常
-
在我每次转到索引页面时都将 new 更改为 upsert 后,我得到“无法读取未定义的属性 'substring'”
-
你能把代码贴在你实际访问数据的地方吗,你在那里使用子字符串关键字
-
@saikatchakrabortty
索引页
" alt="博客图片">...
阅读更多
标签: mongodb express mongoose ejs