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

Node.js Student.find报Converting circular structure to JSON错误

错误原因

Student.find()是Mongoose的查询方法,执行后返回的是Query查询实例(类Promise的thenable对象),不是最终查询出的学生数据:

  • 这个Query实例内部存在循环引用结构,本身无法被JSON.stringify正常序列化
  • 原有代码的then回调没有设置入参接收查询完成后resolve出的实际学生数据,直接把带循环引用的Query实例传给了res.send()
  • Express处理响应时会自动对传入内容做JSON序列化,遇到循环引用就会抛出TypeError: Converting circular structure to JSON错误
修复方法

在then回调中接收查询返回的实际学生文档数据,再将数据传给响应方法即可,修复后的代码:

app.get('/students', (req, res)=>{
 const studentsQuery = Student.find();
 studentsQuery.then((studentsData)=>{
    // 此处studentsData才是查询到的学生列表数据,无循环引用可正常序列化
    res.status(200).send(studentsData);
   }).catch((e)=>{
    console.log(e);
    res.status(400).send(e);
  })
})

如果习惯async/await写法,也可以简化成如下形式,逻辑完全一致:

app.get('/students', async (req, res)=>{
  try {
    const studentsData = await Student.find();
    res.status(200).send(studentsData);
  } catch (e) {
    console.log(e);
    res.status(400).send(e);
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:54:09