首页 > 解决方案 > 如何使用 express-validator(版本 6.6.1)明智地验证字段条件

问题描述

我需要根据参数验证各个字段。所以在我的节点 js 路由中,如果幻灯片等于一个(在参数中)而不是仅验证姓名、电子邮件和电话号码。如果 slide 等于 2,则仅验证城市和州。如果幻灯片等于三,则验证用户地址是否存在。我想在一条路线中进行此验证。如果可能,请提供帮助。谢谢

标签: javascriptnode.jsvalidationbackendexpress-validator

解决方案


好的,我得到了解决方案,如果幻灯片值为零,则验证地址、状态、邮政编码等。如果幻灯片值为 1 等,则相同。

`router.post("/updateUser",
[
    //first step
    body("slide").not().isEmpty().withMessage('please provide slide number.'),
    body("birthDate").if(body('slide').custom((value, {
        req
    }) => value == 0)).not().isEmpty().withMessage('BirthDate is required.'),

    body("address").if(body('slide').custom((value, {
        req
    }) => value == 0)).not().isEmpty().withMessage('address is required.'),

    body("state").if(body('slide').custom((value, {
        req
    }) => value == 0)).not().isEmpty().withMessage('state is required.'),

    body("postal_code").if(body('slide').custom((value, {
        req
    }) => value == 0)).not().isEmpty().withMessage('postal code is required.'),

    //second step
    body("interests").if(body('slide').custom((value, {
        req
    }) => value == 1)).isArray({
        min: 1
    }).withMessage('at least one interests is required.'),

    //third step
    body("home").if(body('slide').custom((value, {
        req
    }) => value == 2)).not().isEmpty().withMessage('homeOwner is required.'),

    //four step
    body("driveVehicle").if(body('slide').custom((value, {
        req
    }) => value == 3)).not().isEmpty().withMessage('driveVehicle is required.'),

    //fifth step
    body("vehicleDetails.model").if(body('slide').custom((value, {
        req
    }) => value == 4)).not().isEmpty().withMessage('vehicle model is required.'),

    body("vehicleDetails.mileage").if(body('slide').custom((value, {
        req
    }) => value == 4)).not().isEmpty().withMessage('vehicle mileage required.')
],async function (req, res, next) {`

推荐阅读