export function valUPM() {
return (req: Request, _res: Response, next: NextFunction) => {
req
.checkBody(
"paymentType",
`paymentType: ${messages.getFromSession(req, "mustNotBeEmpty")}`
)
.notEmpty();
if (req.body.paymentType === "USP") {
req
.checkBody(
"storeId",
`storeId: ${messages.getFromSession(req, "mustNotBeEmpty")}`
)
.notEmpty();
} else if (req.body.paymentType === "CC") {
if (req.body.register) {
req
.checkBody(
"register",
`register: ${messages.getFromSession(req, "mustBeBoolean")}`
)
.isBoolean();
} else {
req
.checkBody(
"register",
`register: ${messages.getFromSession(req, "mustNotBeEmpty")}`
)
.notEmpty();
}
}
req.getValidationResult().then(errs => {
if (errs.isEmpty()) {
return next();
}
const error = new BFFError(
400,
"BadRequest",
1,
errs.array().map(error => {
return { [error.param]: error.msg };
})
);
return next(Error(JSON.stringify(error)));
});
};
}
更改 API 后如何在 express 验证器中实现此类逻辑
在 if 循环中调用 req.checkBody 或所需的验证函数完成了如上所示的技巧,但在 API 更改后如何实现这一点我尝试了将 paymentTYPE 检查为自定义验证器并实现检查并抛出消息的解决方法在自定义验证器中,但键更改。
使用当前的 APi 执行此操作的正确方法是什么,因为这对于所有想要从 3.0.0s 更新到最新的 express-validator API 的人都很有用