validationItem 분리

하주영·2024년 4월 29일

node.js

목록 보기
9/15

자주 사용되는 validation의 필드 모음을 파일로 별도로 분리할 수 있다.

/** validationItem.js **/
import { body } from "express-validator";
const validationItem = [
  body("email").notEmpty().isString().withMessage("이메일 형식이 잘못됨"),
  body("password")
    .notEmpty()
    .isString()
    .isLength({ min: 4 })
    .withMessage("패스워드 형식이 잘못됨"),
  body("postId")
    .optional()
    .isNumeric()
    .toInt()
    .withMessage("포스트 아이디 형식이 잘못됨"),
];

export default validationItem;

자주 사용하는 유효성 검증체인 메소드

  • notEmpty() : 비어있지 않은지 확인
  • optional() : 필드가 선택사항인 경우, 선택적 필드는 실패하는 대신 유효성 검사를 건너뜀
  • isArray() : 배열인지 확인 {min, max}도 옵션으로 부여 가능
  • isObject() : 객체인지 확인
  • isString() : 문자열인지 확인
  • isNumeric() : 숫자로 변환이 가능한지 확인 => 문자열이더라도 숫자로 변환가능하면 됨
  • isBoolean() : 불리언 값인지
  • toInt() : 숫자로 변환

적용

import express from "express";
import { validationResult } from "express-validator";
import validationItem from "./validationItem.js"; // validationItem 불러오기

const app = express();
const port = 8000;

app.use(express.json());

const validate = (req, res, next) => {
  const err = validationResult(req);
  if (!err.isEmpty()) {
    return res.send({ errors: err.array() });
  }
  return next();
};

app.get("/", [...validationItem, validate], (req, res) => { // 배열 형태의 validationItem 풀어헤치기
  console.log(req.body.email, req.body.password, req.body.postId);
  return res.send(`Hello, ${req.body.postId}!`);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

참고문서
https://express-validator.github.io/docs/api/validation-chain/

0개의 댓글