Hapi에서 검증용도로 사용하는 모듈
입력된 값의 scheme를 사전에 정의하여 값의 유효성을 검사한다.
관계에 따른 내용을 정의할 수 있다는 점이 이점이다.
npm install --save @hapi/joiconst 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"}const schema2 = Joi.object().keys({
username: Joi.string().min(3).max(30).required(),
}).unknown();schema 에 정의되지 않은 key는 validation error가 난다.
이를 피하기위해.unknown() API를 사용해야 된다.
const { error, value } = Joi.validate(user, schema, options)정의된 key 중 에러가 나면 더 이상 진행하지 않는 것이 기본동작이다.
한 번에 모든 에러를 확인하고 싶으면 validate 시점에 동작을 제어할 수 있는 validate 의 세 번째 파라미터로 abortEarly: false 를 설정하면 된다.
const schema = Joi.object().keys({
address1: Joi.string(),
address2: Joi.string(),
}).with('address1', 'address2');.and, .or, .nand, .xor 는 bit 연산과 동일하게 생각하면 된다.
.with, .without 기준 key에 대해서 있어야 되거나 없어야 되는 관계를 설정한다.
const schema = Joi.string().alphanum();a-z, A-Z, 0-9 만 가능하다.
const schema = Joi.object().length(5);
limit에 키의 최대길이를 명시해준다.