Mongoose报错:Model.findOne()不再支持回调函数,如何解决?
解决MongooseError: Model.findOne()不再接受回调函数的问题
Mongoose 6.x及以上版本彻底移除了查询方法对回调函数的支持,Model.findOne()这类方法默认返回Promise,不再接收回调参数,这就是触发该错误的原因。
解决方案
方法1:使用async/await(推荐)
通过异步函数结合await处理查询逻辑,代码结构更清晰易读:
// 假设你的数据模型为User async function queryUser() { try { const targetUser = await User.findOne({ name: 'example' }); console.log('查询结果:', targetUser); // 编写查询成功后的业务逻辑 } catch (error) { console.error('查询失败:', error); // 处理查询错误 } } // 调用查询函数 queryUser();
方法2:使用Promise链式调用
如果不适用async/await,也可以用Promise的.then()和.catch()处理结果:
User.findOne({ name: 'example' }) .then(targetUser => { console.log('查询结果:', targetUser); // 编写业务逻辑 }) .catch(error => { console.error('查询失败:', error); // 处理错误 });
注意:不建议再使用回调函数的写法,这不符合Mongoose新版本的设计规范,后续版本也不会再支持回调形式的查询。
内容的提问来源于stack exchange,提问作者user21436456
相关产品推荐
相关产品推荐

