findByIdAndUpdate不更新任何内容

时间:2019-01-20 11:04:55

标签: mongodb express mongoose ejs

我正在按照教程进行操作,但是它似乎已经过时了,看起来好像已经改变了,我有一个编辑页面,该页面正在尝试编辑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,但它仍然不更新任何内容

2 个答案:

答案 0 :(得分:0)

我认为您的更新查询格式不正确。

您的查询应类似于this

    Blog.findByIdAndUpdate(req.params.id, {$set: {blog: req.body.blog}}, function(err, updatedData){
        if(err){console.log(err);}
        else{ console.log('blog  updated');
         // do other stuff.....
        }

})

答案 1 :(得分:0)

在参数req.body的末尾,您忘记添加博客了,因此应该是

Blog.findByIdAndUpdate(req.params.id,req.body.blog,function(error, updatedBlog)