자주 사용되는 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;
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/