Express.js 嵌套路由的数据关联问题

data association problem with nested route with Express.js

假设我想要大致如下所示的 REST 端点:

/blogs
/blogs/new
/blogs/:id
/blogs/:id/edit
/blogs/:id/comments/new

每个 if 上的 CRUD 都有意义。例如,/blogs POST 创建一个新博客,GET 获取所有博客。 /blogs/:id GET 只获取那个带有相关评论的博客。 /blogs/:id/comments/ POST 为该特定博客创建新评论

现在一切正常,但与每个博客的评论关联无法正常工作。我认为我的模型或 /blogs/:id/comments/new route 造成了该错误。
博客架构

var blogSchema=new mongoose.Schema({
    title:String,
    image:String,
    body:{type:String, default:""},
    created:{ type: Date },
  comments:[{
    type:mongoose.Schema.Types.ObjectId,
    ref:'Comment'
  }]
});

评论架构

var commentSchema=mongoose.Schema({
    text:String,
    author:String
})

评论相关的所有路线

app.get('/blogs/:id/comments/new',function(req,res){
    //find blog by id
    Blog.findById(req.params.id,function(err,blog){
        if(err){
            console.log(err)
        }else{
            res.render('comments/new.ejs',{blog:blog})
        }
    })
})
app.post('/blogs/:id/comments',function(req,res){
    //lookup blog using id
    Blog.findById(req.params.id,function(err,blog){
        if(err){
            console.log(err)
        }else{
            Comment.create(req.body.comment,function(err,comment){
                if(err){
                    console.log(err)
                }else{
                    blog.comments.push(comment);
                    blog.save()
                    res.redirect('/blogs/'+blog._id);
                }
            })
        }
    })
})

终于 /blogs/:id

app.get('/blogs/:id',function(req,res){
    Blog.findById(req.params.id).populate('comments').exec(function(err,foundBlog){ 
        if(err){
            console.log(err)
            res.redirect('/blogs')
        }else{
            res.render('blogs/show.ejs',{blog:foundBlog})
        }
    })
})

错误:

我知道如果不使用它就很难理解所有这些东西,这就是为什么我提供我的虚拟 environment 在那里你可以找到我的项目并且可以操作 it.Any赞赏。
感谢您的宝贵时间。 提前致谢。

req.body.comment{title:'emon',body:'new comment'}。这不符合 commentSchema 中定义的内容。更改它以适应模式结构将解决问题。