在我的nodejs / express rest API中,使用服务/控制器模式。
在服务中,我打电话给mongodb。我希望在服务中进行错误处理/抛出错误,但是我不希望两次共同致电User.find()
。
controller.js
exports.findAll = (req, res, next) => {
userService.findAllUsers()
.then(users => res.json(users))
.catch(err => next(err));
};
service.js
async function findAllUsers() {
if(await User.find()) {
return await User.find()
} else {
throw "Couldn't retrieve all users"
}
}
如果User.find()
失败,我该如何重写服务功能才能引发错误?
答案 0 :(得分:1)
只需将其存储在变量中:
async function findAllUsers() {
let users = await User.find();
if(users) {
return users;
} else {
throw "Couldn't retrieve all users"
}
}
答案 1 :(得分:0)
async function findAllUsers() {
try {
return await User.find();
} catch(error) {
return error;
}
}
答案 2 :(得分:0)
// # service.js
async function findAllUsers() {
// # return with new promise.
return new Promise((resolve, reject) => {
return await User.find().then(user => resolve(user)).error(er => reject(er));
});
}
有关更多参考,请克隆此仓库:https://github.com/sagormax/node-admin