我正在研究猫鼬,我有一个查询示例: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;
}
添加回答
举报
0/150
提交
取消