Mongoose报错:Model.find()不再支持回调,求MongoDB数据查询方法
解决Model.find()不再支持回调的问题
你遇到的报错是因为Mongoose 6.x及以后版本移除了对回调函数的支持,Model.find()现在仅返回Promise,无法再传入回调参数。以下是两种正确的实现方式:
方式一:使用Promise的then/catch
router.get('/users', (req, res) => { User.find({}) .then(data => { res.send(data); }) .catch(err => { console.error(err); res.status(500).send('获取用户数据失败'); }); });
方式二:使用async/await(更推荐)
router.get('/users', async (req, res) => { try { const data = await User.find({}); res.send(data); } catch (err) { console.error(err); res.status(500).send('获取用户数据失败'); } });
注意事项:
- 使用async/await时,必须给路由处理函数添加
async关键字 - 不要直接
throw err,Express路由中未捕获的异常会导致服务器崩溃,需通过try/catch捕获并返回错误响应 - 如果需要添加查询条件,直接将条件对象传入
find()即可,例如User.find({ status: 'active' })
内容的提问来源于stack exchange,提问作者Sheharyar Khan
相关产品推荐
相关产品推荐

