如何使用 nodejs 从 joi 验证“位数”?

Rav*_*ngh 8 mongoose node.js joi

我希望如果输入字段中的位数少于/多于 14(例如),那么 joi 应该返回错误。

我怎么能用数字类型而不是字符串来做到这一点。

小智 11

下面给出了 10 位数字手机号码的验证

joi.string().length(10).pattern(/^[0-9]+$/).required(),
Run Code Online (Sandbox Code Playgroud)

您应该根据您的要求更改规则。模式(您的正则表达式)用于仅接受数字,长度()用于验证接受多少字符验证并且仅适用于字符串函数。

  • js 正则表达式中还有“\d”。因此你也可以写 `joi.string().length(10).pattern(/^\d+$/).required(),` (3认同)

Sac*_*hah -3

您可以使用它minmax方法。

joi.number().min(14)
joi.number().max(14)
Run Code Online (Sandbox Code Playgroud)

如果字符串没问题,那么你也可以这样做。

joi.string().length(14).required()
Run Code Online (Sandbox Code Playgroud)

当你读取数据进行数据库操作时,你可以使用+with value。它将把你的字符串转换成整数。但如果数据库是 mysql,请确保您的数据库允许将这个大值作为整数。我建议您使用字符串作为数据类型。

let obj = {
    number: +req.body.number
}
Run Code Online (Sandbox Code Playgroud)