NodeJS - 로직 분리(routes / models / controllers)

김정욱·2020년 12월 10일
5

NodeJS

목록 보기
5/22
post-thumbnail

기존 프로젝트 구조

├── 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를 만들어 분리 할 계획

Controller

  • 실제 앱 개발시 사용했 던 구조
  • 기능에 따라 route경로를 분리
  • route에 따른 controller를 작성 (내용이 적은 auth는 user에 병합)

(/routes/record.js)

  • 첫 프로젝트라서 url경로가 그닥 RESTful하지는 못한 것 같다;

(/controllers/record.js)

  • 이렇게 비즈니스 로직을 분리하면 확실히 가독성이 증가
  • 유지보수도 훨씬 용이

Model

MVC 디자인 패턴에서 Model은 DB에 접근하는 실제적 코드를 담아놓은 것
(DAO[Data Access Object]와 같은 역할!)


(/models/item.js)

  • pool은 DB에 접근하기 위해 생성한 module
    (추후 글에서 다룰 예정)
profile
Developer & PhotoGrapher

0개의 댓글