快速验证器:如何使用查询检查来检查“+xyz”?

Jat*_*tra 5 javascript node.js express express-validator

我正在尝试使用 express-validator 验证/允许 +originalUrl、-originalUrl 、 +createdAt 等单词集。

它支持允许模式的.matches。https://github.com/validatorjs/validator.js/

这是我的模式

query('sort_by')
    .optional()
    .matches(/^(+originalUrl|-originalUrl)$/)
    .withMessage({
      error: 'Invalid parameter value',
      detail: {
        max_results: 'parameter value (+originalUrl|-originalUrl) is allowed',
      },
    }),
Run Code Online (Sandbox Code Playgroud)

尝试过.matches(/^(\+originalUrl|-originalUrl)$/)但没有成功。

不知怎的,我觉得阅读“+”有问题。 在我的后端+被编码为 %20,因此尝试用 %20 替换 + 但没有成功。

更新:在记录查询参数 + 时,它被视为' orignalUrl'并且.isIn([' orginalUrl']现在可以工作,但是我仍然如何在 + 上进行转换或查询,因为有人可以输入“originalUrl”,这仍然可以工作,因此得到验证,这是不可取的。

也尝试询问验证者 -> https://github.com/express-validator/express-validator/issues/1122

我如何检查+某事?

小智 0

将其作为 %20 发送并执行 unescape

query('sort_by')
.optional()
.unescape()
.matches(/^(+originalUrl|-originalUrl)$/)
.withMessage({
  error: 'Invalid parameter value',
  detail: {
    max_results: 'parameter value (+originalUrl|-originalUrl) is allowed',
  },
})
Run Code Online (Sandbox Code Playgroud)