Joi는 Javascript 유효성 검증을 위한 라이브러리다. Joi는 여러 타입과 규칙을 이용해 유효성을 검증할 수 있으며, 유효성 검증에 실패하면 오류를 발생시킨다.
유효성 검증 ( Validation )
function is1(value) {
return value === 1;
}
- 위 코드는 단순히 값이 1인지 아닌지 판단해서 Boolean 타입의 값을 반환하는 함수다. 이런 간단한 함수도 Validation. 즉, 검증을 위한 코드가 된다.
- 이런 데이터를 검증하는 것을 더 쉽고 간결하게 작성하도록 도와주는 joi라는 라이브러리를 사용할 수 있다.
joi 설치
# yarn을 이용해 Joi를 설치합니다.
yarn add joi
- yarn add joi를 터미널에 입력해 패키지를 설치한다.
joi를 이용해 유효성 검증 하기
- 문자열 길이 검증
import Joi from 'joi';
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 최소 3글자, 최대 30글자로 정의합니다.
name: Joi.string().min(3).max(30).required(),
});
// 검증할 데이터를 정의합니다.
const user = { name: 'Foo Bar' };
// schema를 이용해 user 데이터를 검증합니다.
const validation = schema.validate(user);
// 검증 결과값 중 error가 존재한다면 에러 메시지를 출력합니다.
if (validation.error) {
console.log(validation.error.message);
} else {
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Data!');
}
- 이메일 검증
import Joi from 'joi';
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 이메일 형식에 맞아야합니다.
email: Joi.string().email().required(),
});
// 검증할 데이터를 정의합니다.
const user = { email: 'foo@example.com' };
// schema를 이용해 user 데이터를 검증합니다.
const validation = schema.validate(user);
// 검증 결과값 중 error가 존재한다면 에러 메시지를 출력합니다.
if (validation.error) {
console.log(validation.error.message);
} else {
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Email User!');
}
https://joi.dev/api/?v=17.13.3 ( 더욱 상세한 joi 문법 사용 방법 )
joi를 이용해 유효성 검증하기 ( 비동기 )
- 비동기로 문자열 길이 검증하기
import Joi from 'joi';
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 최소 3글자, 최대 30글자로 정의합니다.
name: Joi.string().min(3).max(30).required(),
});
// 검증할 데이터를 정의합니다.
const user = { name: 'Foo Bar' };
try {
// schema를 이용해 user 데이터를 검증합니다.
const validation = await schema.validateAsync(user);
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Data!');
} catch (error) {
// 검증에 실패한다면, 에러 메시지를 출력합니다.
console.log(error.message);
}
- validateAsync()를 통해 데이터를 비동기적으로 검증한다.
'Javascript' 카테고리의 다른 글
[Javascript] Prettier ( 코드 서식 관리 도구 ) (0) | 2024.09.04 |
---|---|
[Javascript][Node.js] 에러 처리 미들웨어 (0) | 2024.09.04 |
[Javascript][Node.js] Middleware ( 미들웨어 ) (0) | 2024.09.03 |
[Javascript][Node.js] MongDB 코드에서 연결 ( mongoose ) (0) | 2024.09.03 |
[Javascript][Node.js] Mongo DB (0) | 2024.09.02 |