You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB中通过存储另一集合ID的对象获取数据及博文评论关联问题

错误原因
  • 查询博文文档时未使用Mongoose提供的populate()关联填充方法,返回的got.comment字段仅存储了关联评论的ObjectId数组,并非完整的评论实体数据
  • 对普通ID数组执行find({})属于非法操作,数组本身不具备该查询方法,自然无法拿到正确的评论数据
修复后的路由代码
app.get("/post/:postname",(req,res)=>{
  const requesttitle = req.params.postname;
  // 查询博文时直接填充comment关联字段
  Blog.findOne({_id: requesttitle}).populate('comment').exec((err ,got)=>{
    if(err){
      console.log(err)
      return res.status(500).send('查询失败')
    }
    // 此时got.comment已经是完整的评论对象数组,直接传递给模板即可
    console.log(got.comment)
    res.render('post',{post:got });
  })
})
额外注意事项
  • 确保定义Comment模型时的命名和Schema中ref字段值完全一致,示例:mongoose.model('Comment', commentSchema),大小写不要出错
  • 如果你的路由参数:postname实际存储的是博文slug而非_id,请自行修改findOne的查询条件
  • 新增评论时记得同时把评论的_id推入对应博文的comment数组中,保证关联关系正常存储

内容的提问来源于stack exchange,提问作者Tushar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 16:27:01