gpt4 book ai didi

javascript - 如何做条件检查 express-validator 5.3.0?

转载 作者:搜寻专家 更新时间:2023-10-31 23:19:30 24 4
gpt4 key购买 nike

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 后如何在快速验证器中实现此类逻辑

在 if 循环中调用 req.checkBody 或所需的验证函数可以实现如上所示的技巧,但在更改 API 后如何实现我尝试了一种变通方法,将 paymentTYpe 检查为自定义验证器并实现检查并将消息放入自定义验证器中,但 key 发生了变化。

使用当前的 API 执行此操作的正确方法是什么,因为这对所有想要从 3.0.0s 更新到最新的 express-validator API 的人都有用

最佳答案

express-validator v5.x.x不支持条件验证,但很快就会出现。
这是合并请求,如果您想就 API 提供反馈:https://github.com/express-validator/express-validator/pull/658

但是,请注意遗留 API(使用 req.checkBody()req.getValidationResult() 等的 API)尚未从还没有表达验证器。

可以v5.x.x 中继续使用它,就像在 v3.x.x 中一样。只是不建议这样做,因为它已被弃用并且可能会在 v6 到期时被删除(还没有!)。

所有文件都是here ,与较新的 API 文档并列。

免责声明:我是 express-validator 维护者。

关于javascript - 如何做条件检查 express-validator 5.3.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53655624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com