【问题标题】:Validation not accepting decimals using Joi node.js使用 Joi node.js 验证不接受小数
【发布时间】:2018-08-30 04:49:57
【问题描述】:

我已经使用 joi 为某些参数添加了验证,为此我需要验证点参数以接受小数。

这是我的验证码

const userSchema = Joi.object({
point: Joi.number().max(150).required(),
});

在上面的代码中,我想接受十进制的数据来代替数字。任何人都知道编写代码来接受小数。

【问题讨论】:

  • 你能提供你得到的错误吗?
  • Joi.number(...).float 不是函数。这是我得到的 eroor
  • Joi 库没有float 函数。 number() 应该接受所有类型的数字,包括整数和小数。如果您在不使用float 的情况下仍然出现错误,请在此处提供吗?
  • 使用 number() 我没有收到任何错误
  • 如果您没有收到错误,那么问题出在哪里?

标签: node.js express joi


【解决方案1】:

从 Joi a long time ago 中删除了对验证浮点数的支持,因为它本质上是无用的。

JavaScript 中的数字始终存储为双精度浮点数,因此无论负载包含 2 还是 2.0000000,在将值分配给变量时,JavaScript 都会看到相同的内容。

Joi 有一个precision() 方法,您可以使用该方法指定允许的最大小数位数,您可能会或可能不会觉得有用。

无论出于何种原因,您特别需要浮点数,您要么需要使用.extend() 创建自己的自定义验证,要么在有效负载中接受整数并在服务器端进行某种类型的转换。

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2020-05-30
    • 2020-12-23
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多