├── package.json ├── bin │ └── www ├── public │ ├── images │ ├── javascripts │ ├── stylesheets ├── routes │ ├── index.js │ ├── post.js - 여기에 라우팅 + 비즈니스 로직까지 모두 작성함; ├── views └── app.js
(/routes/post.js)
var express = require('express'); var router = express.Router(); let post = require('../models/post'); let util = require('../modules/util'); let statusCode = require('../modules/statusCode'); let resMessage = require('../modules/responseMessage'); //모든 게시글 조회 router.get('/', async function(req, res, next) { var data = []; var result = await post.postSearchAll(); res.status(statusCode.OK).send(result); return; }); ... module.exports = router;
: routes에서 들어오는 api요청에 대해서 라우팅을 하면서 동시에 비즈니스 로직을 작성했음
--> 가독성 저하 + 유지보수 비 용이
--> 비즈니스 로직을 처리하는 controller를 만들어 분리 할 계획
- 실제 앱 개발시 사용했 던 구조
- 기능에 따라 route경로를 분리
- route에 따른 controller를 작성 (내용이 적은 auth는 user에 병합)
(/routes/record.js)
- 첫 프로젝트라서 url경로가 그닥 RESTful하지는 못한 것 같다;
(/controllers/record.js)
- 이렇게 비즈니스 로직을 분리하면 확실히 가독성이 증가
- 유지보수도 훨씬 용이
MVC 디자인 패턴에서 Model은 DB에 접근하는 실제적 코드를 담아놓은 것
(DAO[Data Access Object]와 같은 역할!)
(/models/item.js)
- pool은 DB에 접근하기 위해 생성한 module
(추후 글에서 다룰 예정)