Joi란?

joi는 Node.js에서 사용할 수 있는 데이터 검증 및 스키마 유효성 검사 라이브러리이다. joi는 데이터의 형식, 범위, 값 등을 정의하고 유효성을 검사할 수 있게 해 준다.

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 });

Schema Method

자주쓰는 내역으로 작성하였다.