nodejs 使用 joi
时间: 2023-11-14 20:10:04 浏览: 104
nodejs 中的 joi 是一个数据验证库,它可以用于验证请求参数、表单数据等。使用 joi 可以方便地定义验证规则,并且可以自动进行验证,如果验证失败,joi 会返回详细的错误信息。
下面是一个使用 joi 进行参数验证的示例:
```javascript
const Joi = require('joi');
const schema = Joi.object({
username: Joi.string().alphanum().min(3).max(30).required(),
password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),
repeat_password: Joi.ref('password'),
access_token: [
Joi.string(),
Joi.number()
],
birth_year: Joi.number().integer().min(1900).max(2013),
email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
}).with('username', 'password').xor('password', 'access_token').with('password', 'repeat_password');
const result = schema.validate({ username: 'abc', birth_year: 1994 });
console.log(result);
```
在上面的示例中,我们定义了一个包含多个字段的对象,并使用 joi 定义了每个字段的验证规则。例如,我们要求 username 字段必须是一个长度在 3 到 30 之间的字母数字字符串,而 password 字段必须是一个长度在 3 到 30 之间的字母数字字符串,并且必须与 repeat_password 字段相同。
当我们调用 `schema.validate` 方法时,joi 会自动验证传入的对象是否符合定义的规则,并返回一个包含验证结果的对象。如果验证成功,该对象的 `error` 属性为 `null`,否则为一个包含详细错误信息的对象。
阅读全文