19. Node 가계부 만들기 [ 가계부 전송 받은 데이터 유효성 검사 ] - 6
2022. 5. 29. 15:43ㆍ프로젝트/가계부 - 제작 JavaScript
express-validator 사용 방법 : https://crispypotato.tistory.com/212
* accounts.route.js 에서 DayAccountFind는 날짜 형식만 바꿔주면 재사용이 가능하여
데이터 형식을 express-validator의 match로 일, 월, 년 형식을 따로 분리해서 만들었다.
accounts.validator.js 작성
//accounts.validator.js
const { param, body } = require('express-validator')
const Index = param('index').notEmpty().isNumeric()
const DateBody = body('date')
.notEmpty()
.isLength(10)
.matches(/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/)
const DateParam = param('date')
.notEmpty()
.isLength(10)
.matches(/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/)
const BigCategoryBody = body('bigCategory').notEmpty()
const SmallCategoryBody = body('smallCategory').notEmpty()
const CardBody = body('card').notEmpty()
const CostBody = body('cost').isNumeric().notEmpty()
const Month = param('date')
.notEmpty()
.isLength(7)
.matches(/^\d{4}-(0[1-9]|1[012])$/)
const Year = param('date')
.notEmpty()
.isLength(4)
.matches(/^\d{4}$/)
const Card = param('card')
.exists()
.matches(/^(cash|shinhan|samsung|hyundai|woori|lotte|kb)$/)
.notEmpty()
.isString()
module.exports = {
Index,
DateBody,
DateParam,
BigCategoryBody,
SmallCategoryBody,
CardBody,
CostBody,
Month,
Year,
Card
}
accounts.route.js 수정
const express = require('express')
const router = express.Router()
const { Validator } = require('../../lib/validator')
const {
Index,
DateBody,
DateParam,
BigCategoryBody,
SmallCategoryBody,
CardBody,
CostBody,
Month,
Year,
Card
} = require('./accounts.validators')
const {
CreateAccount,
UpdateAccount,
DeleteAccount,
DayAccountFind,
CardAccountFind
} = require('./accounts.service')
// 가계부 작성
router.post(
'/:date',
[
DateParam,
BigCategoryBody,
SmallCategoryBody,
CardBody,
CostBody,
Validator
],
CreateAccount
)
// 가계부 수정
router.patch(
'/:index',
[
Index,
DateBody,
BigCategoryBody,
SmallCategoryBody,
CardBody,
CostBody,
Validator
],
UpdateAccount
)
// 가계부 삭제
router.delete('/:index', [Index, Validator], DeleteAccount)
// 해당 날짜 가계부 확인
router.get('/day/:date', [DateParam, Validator], DayAccountFind)
// 월 별 가계부 확인
router.get('/month/:date', [Month, Validator], DayAccountFind)
// 년 별 가계부 확인
router.get('/year/:date', [Year, Validator], DayAccountFind)
// 해당 날짜 카드별 상세 확인
router.get(
'/card/:card/day/:date',
[Card, DateParam, Validator],
CardAccountFind
)
module.exports = router
728x90
반응형
'프로젝트 > 가계부 - 제작 JavaScript' 카테고리의 다른 글
20. Node 가계부 만들기 JS 버전 완료 후기 (0) | 2022.05.29 |
---|---|
18. Node 가계부 만들기 [ 가계부 기능 Service 구현 ] - 5 (0) | 2022.05.29 |
17. Node 가계부 만들기 [ 가계부 기능 Repository 구현 ] - 4 (0) | 2022.05.29 |
16. Node 가계부 만들기 [ /accounts url passport-jwt 적용 ] - 3 (0) | 2022.05.28 |
15. Node 가계부 만들기 [ 가계부 기본 연결] - 2 (0) | 2022.05.28 |