Joi
- https://joi.dev/
- https://joi.dev/tester/
- https://github.com/sideway/joi
- v17.4.0 joi/API.md
- v16.1.4 joi/API.md
const Joi = require('joi');
const schema = Joi.object({
username: Joi.string() // 문자
.alphanum() // 알파벳, 숫자
.min(3) // 최소 3이상
.max(30) // 최대 30이하
.required(), // 필수
password: Joi.string() // 문자
.pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')), // 정규식
repeat_password: Joi.ref('password'), // 비밀번호 학인
access_token: [ // 제한되지 않은 문자열 or 숫자
Joi.string(), // 문자
Joi.number() // 숫자
],
birth_year: Joi.number() // 숫자
.integer() //
.min(1900) // 최소 1900 이상
.max(2013), // 최대 2013 이하
email: Joi.string()
.email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
})
.with('username', 'birth_year')
.xor('password', 'access_token')
.with('password', 'repeat_password');
schema.validate({ username: 'abc', birth_year: 1994 });
// -> { value: { username: 'abc', birth_year: 1994 } }
schema.validate({});
// -> { value: {}, error: '"username" is required' }
const {params, err} = schema.validate({ username: 'abc', birth_year: 1994 });
if (err){
console.error(`Joi error: `, err)
}
// Also -
try {
const value = await schema.validateAsync({ username: 'abc', birth_year: 1994 });
}
catch (err) {
console.error(`Joi error: `, err)
}
반응형
'lang > node' 카테고리의 다른 글
mogan body log (0) | 2023.08.09 |
---|---|
Build a Website Accessibility Tester With JavaScript & Pa11y (0) | 2021.11.10 |
javascript: 교집합(Union), 합집합(Intersection), 여집합(difference, minus) (0) | 2021.01.21 |
linux watcher limit on pm2 (0) | 2019.11.21 |
pm2 npm start (0) | 2019.11.14 |