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) } } }
额外优化建议
- 修正Schema中的拼写错误:所有
require:true应该改为required:true,避免Mongoose的字段校验失效。 - 统一模型导出方式:可以使用ES6的
export default替代module.exports,保持TypeScript代码风格一致。
内容的提问来源于stack exchange,提问作者Ankit Kumar
相关产品推荐
相关产品推荐

