Express-validator:如果其他字段值为真,则使字段可选

Express-validator: make field optional if other field value is true

如果单击 Anonymous 复选框,我正在尝试使用户的 Display Name 可选。

为此,我正在使用 express-validator

检查以下代码:

router
  .route("/create-checkout-session")
  .post(
    [     
      check("displayName") //if isAnonymous : true than this is optional
        .matches(vars.intlRegex)
        .trim()
        .escape()
        .withMessage("Please provide a display name")
        .optional({ checkFalsy: true }),
      check("isAnonymous").isBoolean()],//isAnonymous
    checkForErrors,
    createCheckoutSession

我如何在一个字段中验证另一个字段的值,并基于此将其设为可选。

提前致谢

您可以使用 if condition 来处理这种情况。条件是 isAnonymous 不是 true 然后执行另一个检查 displayName

router
  .route("/create-checkout-session")
  .post(
    [
      check("displayName")
        .if((value, { req }) => { // if isAnonymous : false then let's check
          return !req.body.isAnonymous;
        })
        .matches(vars.intlRegex)
        .trim()
        .escape()
        .withMessage("Please provide a display name")
      check("isAnonymous").isBoolean()
    ],
    checkForErrors,
    createCheckoutSession