使用Mongoose的Model.find()抛出UnhandledPromiseRejectionWarning错误如何解决
错误根因
你调用MyModel.find()时缺少第一个必填的查询过滤参数,直接将回调函数作为唯一参数传入,不符合Mongoose 6.x及以上版本的参数规范:
Model.find()的标准参数规则为Model.find(filter, [options], [callback]),第一个参数filter为查询条件对象,即使需要查询集合内所有数据,也必须显式传入空对象{}作为第一个参数。findById、findOne等方法的首参数允许直接传入对应类型的查询值,你调用这类方法时传参符合规范,因此可以正常运行。
修复方案
回调写法
// 首参数传入空对象代表无过滤条件,查询全部数据 MyModel.find({}, (err, data) => err ? console.log(err) : console.log(data))
Promise写法
MyModel.find({}) .then(data => console.log(data)) .catch(err => console.log(err))
async/await写法
const fetchAllData = async () => { try { const data = await MyModel.find({}) console.log(data) } catch (err) { console.log(err) } } fetchAllData()
内容的提问来源于stack exchange,提问作者Yasha20
相关产品推荐
相关产品推荐

