Skip to content

Latest commit

 

History

History
82 lines (74 loc) · 2.26 KB

File metadata and controls

82 lines (74 loc) · 2.26 KB

Joi

Hapi에서 검증용도로 사용하는 모듈
입력된 값의 scheme를 사전에 정의하여 값의 유효성을 검사한다.
관계에 따른 내용을 정의할 수 있다는 점이 이점이다.

installation

npm install --save @hapi/joi

joi 사용법

const Joi = require('joi');

// validate할 schema 정의
const schema = Joi.object().keys({
  username: Joi.string().min(3).max(30).required(),
  birthyear: Joi.number().integer().min(1900).max(2018),
});

// validate할 object
const user = {
  username: 'username1',
};

// validate
const {error, value} = Joi.validate(user, schema);
console.log(error); // null
console.log(value); // {username: "username1"}

입력된 user 가 정의된 schma와 일치하는지를 확인

.unkown() API

const schema2 = Joi.object().keys({
  username: Joi.string().min(3).max(30).required(),
}).unknown();

schema 에 정의되지 않은 key는 validation error가 난다.
이를 피하기위해 .unknown() API를 사용해야 된다.


abortEalry option

const { error, value } = Joi.validate(user, schema, options)

정의된 key 중 에러가 나면 더 이상 진행하지 않는 것이 기본동작이다.
한 번에 모든 에러를 확인하고 싶으면 validate 시점에 동작을 제어할 수 있는 validate 의 세 번째 파라미터로 abortEarly: false 를 설정하면 된다.

관계 API

const schema = Joi.object().keys({
  address1: Joi.string(),
  address2: Joi.string(),
}).with('address1', 'address2');

.and, .or, .nand, .xor 는 bit 연산과 동일하게 생각하면 된다.
.with, .without 기준 key에 대해서 있어야 되거나 없어야 되는 관계를 설정한다.

string.alphanum()

const schema = Joi.string().alphanum();

a-z, A-Z, 0-9 만 가능하다.

object.length(limit)

const schema = Joi.object().length(5);

limit에 키의 최대길이를 명시해준다.




참고

Hapi/ joi_document
기본 사용법1 기본 사용법2