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

Mongoose 7.3.1报错:Model.find()不再接受回调,求技术支持

解决Mongoose 7.x中Model.find()不支持回调的问题

错误原因

Mongoose 7.x版本彻底移除了Model.find()及其他查询方法的回调参数支持,这是官方为统一异步处理逻辑做出的变更,旧的回调写法会直接抛出Model.find() no longer accepts a callback错误。

修复方案

你需要把回调写法改成async/await(推荐)或者Promise链式调用:

1. 使用async/await(代码更简洁易读)

先看你原来的错误写法(类似这样):

// 旧写法(Mongoose 7.x不兼容)
YourModel.find({}, (err, data) => {
  if (err) {
    // 处理错误
  } else {
    // 处理数据
  }
});

改成async/await版本:

// 新写法:包裹在async函数中
async function fetchData() {
  try {
    const data = await YourModel.find({});
    // 处理获取到的数据
    console.log(data);
  } catch (err) {
    // 捕获并处理错误
    console.error('查询失败:', err);
  }
}

// 调用函数
fetchData();

如果是在Express路由里,直接用async函数作为处理函数:

app.get('/your-route', async (req, res) => {
  try {
    const data = await YourModel.find({});
    res.json(data);
  } catch (err) {
    res.status(500).json({ error: '查询出错: ' + err.message });
  }
});

2. 使用Promise链式调用

如果你更习惯Promise写法,也可以这样改:

YourModel.find({})
  .then(data => {
    // 处理数据
    console.log(data);
  })
  .catch(err => {
    // 处理错误
    console.error('查询失败:', err);
  });

额外说明

Mongoose 7.x的这个变更和Node.js自身推广Promise/async-await的趋势一致,建议优先使用async/await,能让异步代码更接近同步代码的逻辑,降低维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:12:38