You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.1 KiB
JavaScript

7 months ago
/**
* 自定义 404 错误类
*/
class NotFoundError extends Error {
constructor(message) {
super(message);
this.name = 'NotFoundError';
}
}
/**
* 请求成功
* @param res
* @param message
* @param data
* @param code
*/
function success(res, message, data = {}, code = 200) {
res.status(code).json({
status: true,
message,
data
});
}
/**
* 请求失败
* @param res
* @param error
*/
function failure(res, error) {
if (error.name === 'SequelizeValidationError') {
const errors = error.errors.map(e => e.message);
return res.status(400).json({
status: false,
message: '请求参数错误',
errors
});
}
if (error.name === 'NotFoundError') {
return res.status(404).json({
status: false,
message: '资源不存在',
errors: [error.message]
});
}
res.status(500).json({
status: false,
message: '服务器错误',
errors: [error.message]
});
}
module.exports = {
NotFoundError,
success,
failure
}