throw new MongooseError('Query.prototype.exec() 不再接受回调');

Fra*_*zar 9 mongoose

throw new MongooseError('Query.prototype.exec() no longer accepts a callback');
          ^
 
MongooseError: Query.prototype.exec() no longer accepts a callback
Run Code Online (Sandbox Code Playgroud)

我正在尝试注册用户。

小智 23

我遇到了同样的问题并通过两种解决方案修复了它:

  1. 降级你的猫鼬。最新版本停止接受回调。我个人降级到v6.10.0
npm uninstall mongoose
npm install mongoose@6.10.0
Run Code Online (Sandbox Code Playgroud)
  1. 将回调函数更改为 then/catch 方法或使用 async/await。例如,而不是:
myModel.find({}).exec((err, res) => {
  //callback code
});
Run Code Online (Sandbox Code Playgroud)

只需删除 .exec() 函数并将其替换为 .then()/.catch() 即可:

myModel.find({}).then((res) => {
  //if succeded do this block of code
}).catch((err) => {
  //catch error
});
Run Code Online (Sandbox Code Playgroud)


Sha*_*dou 2

我通过用另一个函数替换 db.js 文件中的回调函数解决了该问题。

我的新 db.js 连接 Mongo 数据库:

const mongoose = require('mongoose')

const connectDB = async () => {
    try {
        mongoose.set('strictQuery', false)
        mongoose.connect(process.env.MONGO_URI) 
        console.log('Mongo connected')
    } catch(error) {
        console.log(error)
        process.exit()
    }
}

module.exports = connectDB

    
Run Code Online (Sandbox Code Playgroud)