【问题标题】:Validate input is within a numeric range, possibly a float, using express-validator使用 express-validator 验证输入是否在数字范围内,可能是浮点数
【发布时间】:2020-12-03 19:52:19
【问题描述】:

我正在尝试使用express-validator 验证输入是某个范围内的整数还是浮点数。我试过了:

check(
      'rating',
      'Rating must be a number between 0 and 5'
).isNumeric({ min: 0, max: 5 }),

minmax 值实际上不起作用。我尝试输入高于5 的数字,但它们不会抛出错误。

以下代码有效,它不允许超出minmax 限制的数字:

check(
      'rating',
      'Rating must be a number between 0 and 5'
).isInt({ min: 0, max: 5 })

但仅适用于整数,不适用于小数,并且输入必须是小数或05 之间的整数。

有没有办法做到这一点?

【问题讨论】:

    标签: node.js express express-validator


    【解决方案1】:

    isNumeric 和 isFloat 没有最小值和最大值,您可以使用 not() 代替:

    body("dialyPrice", "Daily price must be between 1000 to 5000").not().isNumeric({ min: 1000, max: 4000 }),
    

    但仅适用于整数,不适用于小数,并且输入需要是小数或 1000 到 4000 之间的整数。

    谢谢。

    【讨论】:

      【解决方案2】:

      isNumeric 没有minmax 值,您可以改用isFloat

      check('rating', 'Rating must be a number between 0 and 5')
        .isFloat({ min: 5, max: 5 })
      

      您可以在validator.js docs 中阅读有关这些方法的更多信息。

      【讨论】:

        猜你喜欢
        • 2021-02-23
        • 2015-08-16
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 2019-12-09
        • 2017-02-03
        • 1970-01-01
        • 2021-09-01
        相关资源
        最近更新 更多