mongoose 我如何使用nodejs验证joi中的“位数”?

w41d8nur  于 2022-11-13  发布在  Go
关注(0)|答案(9)|浏览(217)

我希望如果输入字段中的位数小于/大于14(例如),那么joi应该返回错误。
我怎么能这样做的类型数字不是字符串。

olmpazwi

olmpazwi1#

10位数字移动的号码验证如下所示

joi.string().length(10).pattern(/^[0-9]+$/).required(),

pattern(你的正则表达式)用于只接受数字,length()用于验证可以接受多少字符,并且只适用于字符串函数。

6ovsh4lw

6ovsh4lw2#

验证10位数字移动的号码与自定义错误消息如下所示

joi.string().regex(/^[0-9]{10}$/).messages({'string.pattern.base': `Phone number must have 10 digits.`}).required()
xkftehaa

xkftehaa3#

不幸的是,Hapi/joi目前还没有对数字进行位数计数检查。虽然Sachin Shah说得对,您必须将数字转换为字符串,但您还必须向验证器传递一个正则表达式,以确保只允许使用数字值:
joi.string().length(14).regex(/^\d+$/)

w46czmvw

w46czmvw4#

您可以使用自定义验证器

Joi.object({
phone: Joi
    .string()
    .custom((value, helper) => {
        // you can use any libs for check phone
        if (!checkPhone(value)) {
            return helper.message("phone is incorrect")

        return value

    })
}).validate({
   phone: '+79002940163'
});

文件:https://github.com/hapijs/joi/blob/master/API.md#anycustommethod-description

6ie5vjzr

6ie5vjzr5#

例如,birth_year是介于1900和2013之间的整数

birth_year: Joi.number()
        .integer()
        .min(1900)
        .max(2013)

你可以像这样用joi来表示数字。
像这样u可以传递你的最小值和最大值来验证

niwlg2el

niwlg2el6#

Joi在默认情况下会转换字符串,文档中有详细说明。全局禁用convert或者在特定模式下使用strict。

guicsvcw

guicsvcw7#

minCount: Joi.number().strict()
如果您使用@hapi/joi

ttcibm8c

ttcibm8c8#

For Mobile number:

mobile: Joi.number().integer().min(10 ** 9).max(10 ** 10 - 1).required().messages({
        'number.min': 'Mobile number should be 10 digit.',
        'number.max': 'Mobile number should be 10 digit'
    })

For other digit check:

yourparam: Joi.number().integer().min(1000).max(9999).required().messages({
        'number.min': 'OTP should be 4 digit.',
        'number.max': 'OTP should be 4 digit'
    })
zsbz8rwp

zsbz8rwp9#

您可以使用它的minmax方法。

joi.number().min(14)
joi.number().max(14)

如果它的罚款与字符串,那么你也可以这样做。

joi.string().length(14).required()

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

let obj = {
    number: +req.body.number
}

相关问题