如果在 express-validator 中使用 .if(myCondition).optional() 可能满足条件,则使字段可选?

问题描述

我正在使用 express-validator 包,我想将 if 和 optional 结合起来,就像这样

我设置了 config.requireFieldAB = false

await body("fieldAB")
   .if(config.requireFieldAB === false).optional()
   .isstring()
   .bail()
   .withMessage(CUSTOM_ERROR_MESSAGE)
   .run(req);

使用上面的代码运行验证总是给我

TypeError: Cannot use 'in' operator to search for 'run' in false
at ContextHandlerImpl.if (\node_modules\express-validator\src\chain\context-handler-impl.js:16:19)
at signupValidationRules (\controllers\myController.js:62:15)
at process._tickCallback (internal/process/next_tick.js:68:7)

我可以让它工作的唯一方法是如果我这样做

  if(config.requireFieldAB) {
    await body("fieldAB")
      .isstring()
      .bail()
      .withMessage(RESPONSES.VALIDATION_ERROR)
      .run(req);
  }

这使它成为可选的,但我更喜欢使用 .if().optional() 的第一种方法

有可能吗?如果是,我做错了什么导致“无法使用‘in’运算符搜索‘运行’错误错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)