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

Mongoose填充用户关联博客失败,请求技术协助

Mongoose populate 报错"path: blogs"的解决方法

问题原因

你调用populate("blogs")时,User模型的Schema中不存在名为blogs的字段,Mongoose无法识别这个关联路径,因此抛出路径错误。你的User模型里关联博客数据的字段是liked和myBlog,这两个才是正确的populate目标。

修复代码(DetailUser.ts)

将populate("blogs")替换为你需要的关联字段,比如同时获取用户的自有博客和点赞的博客:

import connectMongo from '@/Backend/Utils/connect'
import type { NextApiRequest, NextApiResponse } from 'next'
const user=require('../../../Backend/Models/user')
const blog=require('../../../Backend/Models/blogs')

type Data = {
  message: string;
  Blogs?: any;
}

export default async function handler(
    req: NextApiRequest,
    res: NextApiResponse<Data>
  ) {
    if(req.method=="GET"){
        await connectMongo()
        const UserId="64b7e7a10d418980ac5d6a2f"
        try{
            // 修正:populate正确的字段名
            const doc=await user.findOne({_id:UserId})
                            .populate("myBlog") // 关联用户的自有博客
                            .populate("liked")  // 关联用户点赞的博客
                            .exec()
            const response={
                message:"success",
                Blogs:doc
              }
              res.json(response)
        }catch(e){
            console.log(e)
            const response={
                message:"failed",
                Blogs:e
              }
              res.json(response)
        }
    }
  }

额外优化建议

  1. 修正Schema中的拼写错误:所有require:true应该改为required:true,避免Mongoose的字段校验失效。
  2. 统一模型导出方式:可以使用ES6的export default替代module.exports,保持TypeScript代码风格一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:35:41