joi는 Node.js에서 사용할 수 있는 데이터 검증 및 스키마 유효성 검사 라이브러리이다. joi는 데이터의 형식, 범위, 값 등을 정의하고 유효성을 검사할 수 있게 해 준다.
Joi는 기본적으로 data schema를 정의한 뒤, validate method를 통해 입력 받은 데이터를 검증한다.
예시를 보자.
먼저 Joi를 활용해 schema를 정의해보자.
const Joi = require('joi');
const joiSchema = Joi.object({
// 닉네임 유호성 검사
nickname: Joi.string().min(3).alphanum().required().messages({
'string.base': '닉네임은 문자열이어야 합니다.',
'string.min': '닉네임은 최소 3자 이상이어야 합니다.',
'string.alphanum': '닉네임은 알파벳 문자와 숫자만 포함해야 합니다.',
'any.required': '닉네임은 필수 항목입니다.',
'string.empty': '닉네임은 필수 항목입니다.',
}),
// 비밀번호 유호성 검사
password: Joi.string().min(4).required().messages({
'string.base': '비밀번호는 문자열이어야 합니다.',
'string.min': '비밀번호는 최소 4자 이상이어야 합니다.',
'any.required': '비밀번호는 필수 항목입니다.',
'string.empty': '비밀번호는 필수 항목입니다.',
}),
// 비밀번호 확인 유효성 검사 및 비밀번호 일치 여부 확인
confirmPassword: Joi.string().valid(Joi.ref('password')).required().messages({
'string.base': '비밀번호 확인은 문자열이어야 합니다.',
'any.only': '비밀번호와 일치해야 합니다.',
'any.required': '비밀번호 확인은 필수 항목입니다.',
'string.empty': '비밀번호 확인은 필수 항목입니다.',
}),
});
먼저 Joi.object를 통해 유효성 검사를 진행할 내역을 Key : value 형태로 만들어준다.
이후 Key 값에 유효성 검사를 진행할 Data를 입력하고, value값에 유효성 검사 항목을 넣어준다.
schema를 생성한 이후, validate 메소드를 검증할 수 있으며, 유효성 검사에 실패하면 error를 출력한다.
// joiSchema validate 메소드를 통해 유호성 검사
const { error } = await joiSchema.validate({ nickname, password, confirmPassword });
자주쓰는 내역으로 작성하였다.