猿问

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

我正在研究猫鼬,我有一个查询示例:


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 工作?


POPMUISE
浏览 302回答 2
2回答

胡说叔叔

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;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答