【发布时间】:2022-02-07 10:50:22
【问题描述】:
我在 Node 方面的经验很少,在 Express/express-validator 方面的经验更少(更像是 NestJS 人)。我正在调整端点上的一些验证,几乎所有东西都在正常工作。目前,当.isEmail() 验证失败时,我在尝试返回400 HTTP 状态代码时遇到了一个小问题。目前它返回正确的消息,但带有(显然是默认的)404。如何设置.isEmail() 以在失败时返回400 错误?我用.custom() 尝试了一些解决方法,但没有成功。目前的代码是:
exports.recoverPassword = [
check('email')
.custom((email, { req }) => {
return new Promise (async (resolve, reject) => {
let noEmail = (email === null || email === undefined)
if(noEmail) {
req.statusCode = 400
return reject()
}
return resolve();
})
}).withMessage('Invalid request.')
.bail()
.isEmail()
.withMessage('Email must be a valid email.')
.custom((email, {req}) => {
return new Promise(async (resolve, reject) => {
let userExists = await ValidationHelper.exists(User, {email});
if (!userExists) {
req.statusCode = 404
return reject()
}
return resolve();
})
}).withMessage('User not found.')
.bail()
.custom(async (email, {req}) => {
return new Promise(async (resolve, reject) => {
let user = await ValidationHelper.first(User, {email})
if (!user) {
return reject()
}
if(user.blocked_at !== null) {
req.statusCode = 403
return reject()
}
return resolve()
})
}).withMessage('User account is blocked.')
];
【问题讨论】:
标签: node.js express express-validator