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

Node.js中使用Mongoose的.find()方法出现异常报错求助

问题原因

这个报错由两个常见原因触发:

  1. Mongoose版本和配套的MongoDB Node.js驱动版本不匹配,高版本的MongoDB驱动修改了find方法的传参规则,和当前使用的Mongoose版本不兼容
  2. find方法传参错误,Mongoose的find方法要求第一个参数为查询过滤对象,查询全量数据需要显式传入空对象{},你的代码直接将回调作为第一个参数传入,不符合方法传参要求

解决方案

第一步:修正find方法传参

将你最后一段查询代码修改为如下写法,补全第一个空查询条件参数:

Album.find({}, function (err, albums){ 
  if (err) {
    console.log(err);
  } else {
    console.log(albums);
  }
});

第二步:修复版本不兼容问题

卸载当前已安装的mongoose和mongodb依赖,安装适配的稳定版本:

npm uninstall mongoose mongodb
npm install mongoose@6

Mongoose 6.x版本自带适配的MongoDB驱动,无需额外单独安装mongodb包,可避免版本冲突问题。

可选优化:等待数据库连接成功后再执行查询

避免数据库连接未完成就发起查询导致的偶发报错,修改数据库连接逻辑如下:

mongoose.connect('mongodb://localhost:27017/albumDB', {useNewUrlParser: true, useUnifiedTopology: true})
.then(() => {
  // 连接成功后再执行查询
  Album.find({}, function (err, albums){ 
    if (err) return console.log(err);
    console.log(albums);
  });
})
.catch(err => console.log('数据库连接失败:', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:21:02