errorCastError:在路径“ comments”处,对值“ comment”的转换为ObjectId失败

时间:2018-09-06 10:37:57

标签: node.js express mongoose

  

当我提交表单时,我不断收到此消息(errorCastError:投射到   ObjectId的路径“ comments”中的值“ comment”失败了),我希望您能   我的问题对了

这是要求形式

action="/campground/<%= camp._id %>/comments/" method="POST">

,这是呈现表单页面的路线

app.get("/campground/:id/comments/new", function(req, res){
    Campground.findById(req.params.id, function(err, camp){
        if(err){
            console.log(err);
        } else {
            res.render("comments/new", {camp: camp});
        }
    });

});

这是创建评论并将其与露营地相关联的帖子路线

app.post("/campground/:id/comments", function(req, res){
   Campground.findById(req.params.id, function(err, camp){
      if(err){
          console.log(err);
          res.redirect("/");
      } else {
          Comment.create(req.body.comment, function(err, comment){
              if(err){
                  console.log(err);
              } else {
                 camp.comments.push("comment");
                 camp.save();
                 res.redirect("/campground/" + req.params.id);
              }
          });
      }
   }); 
});

应用正在收听此内容

app.listen(process.env.PORT, process.env.IP);

1 个答案:

答案 0 :(得分:1)

您正在推送"comment"的字符串,而该字符串是必需的对象或仅ID,以下示例可能会对您有所帮助

camp.comments.push(comment);

camp.comments.push(comment._id);

而不是camp.comments.push("comment");