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

使用Mongoose的Model.find()时遇报错:不再支持回调函数

解决MongooseError: Model.find() no longer accepts a callback

这个错误是因为新版Mongoose(6.x及以后版本)已经移除了对回调函数的支持,必须使用Promise风格或者async/await来处理数据库查询的异步操作,以下是两种可行的修改方案:

方案1:使用Promise的then/catch

将原代码中的回调替换为Promise链,分别处理成功和错误场景:

const Movie = mongoose.model('Movie', moviesSchema);
app.get('/', (req, res) => {
  Movie.find({})
    .then(movies => {
      res.render('index', { moviesList: movies });
    })
    .catch(err => {
      console.error('查询电影数据失败:', err);
      res.status(500).send('服务器内部错误');
    });
});
app.listen(4000, function() {
  console.log('server is running');
});

方案2:使用async/await(更简洁)

把路由处理函数声明为async函数,用await等待查询结果,同时通过try/catch捕获错误:

const Movie = mongoose.model('Movie', moviesSchema);
app.get('/', async (req, res) => {
  try {
    const movies = await Movie.find({});
    res.render('index', { moviesList: movies });
  } catch (err) {
    console.error('查询电影数据失败:', err);
    res.status(500).send('服务器内部错误');
  }
});
app.listen(4000, function() {
  console.log('server is running');
});

注意:两种方案都必须处理错误,避免未捕获的Promise异常导致服务崩溃或请求超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:58:13