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

Men*_*eld 2 javascript node.js express express-validator

如果单击该复选框,我会尝试将Display Name用户的 设为可选。Anonymous

为此,我正在使用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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

hoa*_*gdv 5

您可以使用if 条件来处理这种情况。条件是当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
Run Code Online (Sandbox Code Playgroud)