为了账号安全,请及时绑定邮箱和手机立即绑定

使用 mongoose 查询时如何捕获错误

使用 mongoose 查询时如何捕获错误

POPMUISE 2021-06-16 18:01:10
我正在研究猫鼬,我有一个查询示例:async findOne(condition, constraints) {        try {            let data = await User.findOne(condition, constraints ? constraints : null);            console.log(`findOne success--> ${data}`);            return data;        } catch (error) {            console.log(`findOne error--> ${error}`);            return error;        }    }在我看来,当 findOne 方法不起作用时,这段代码会捕获错误。然后我在控制台中看到当 findOne 方法返回 null 时有一个 'findOne success--> null'。我怎样才能使 try/catch 工作?
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

Mongoose在没有找到文档并且不是错误时的findOne()返回。nullnull


.orFail()如果没有文档与给定的过滤器匹配,您可以使用which 抛出错误。这对于与 async/await 集成很方便,因为为orFail()您节省了一个额外的 if 语句来检查是否没有找到文档:


let data = await User.findOne(condition, constraints ? constraints : null).orFail();

或者只是在没有结果时抛出错误


try {

    let data = await User.findOne(condition, constraints ? constraints : null);

    console.log(`findOne success--> ${data}`);

    if(!data) {

      throw new Error('no document found');

    }

    return data;

} catch (error) {

    console.log(`findOne error--> ${error}`);

    return error;

}


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 301 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信