19.12.21 서버 구동에 필요한 모듈 & sequelize

sykim·2019년 12월 21일
0

백엔드 서버 구동에 필요한 모듈들

노드 : 자바스크립트를 실행해주는 실행기
노드가 제공하는 http 서버가 있으나 편하게 서버 개발을 하기 위해서
노드 위에 백엔드용 서버 프레임워크를 하나 올려서 사용한다.
(리액트 위에 넥스트를 하나 올려서 사용하는 것과 같은 개념)
이 강의에서는 그 서버 프레임워크를 EXPRESS로 선택했다.

npm i express - http 요청을 받아서 응답을 하는 서버 역할
npm i axios - http 요청 받을 때 사용
npm i bcrypt - 비밀번호 암호화할 때 사용
(npm i bcrypt@3.0.6)
npm i cookie-parser - 로그인할때 쿠키랑 세션을 사용해서 필요
npm i express-session - 쿠키랑 함께 로그인했을 때 정보를 저장하기 위한 세션
npm i dotenv - 환경변수
npm i cors - 서버랑 프론트랑 주소가 달라 서로간에 요청을 보낼 때 보안 때문에 제약이 걸리는데 그 제약을 풀어주는 것
npm i helmet hpp - 노드와 익스프레스의 보안 담당
npm i morgan - 서버에 로그를 남겨주는 것 (어떤 응답이 보냈다)
npm i multer - 이미지 업로드할 때 사용
npm i passport passport-local - 로그인 관리를 쉽게 처리할 수 있게 도와주는 패키지
npm i sequelize sequelize-cli - MYSQL 관련으로 ORM(Object-Relational Mapping) 이라고 하며, SQL문이랑 자바스크립트랑 연결해줌
npm i -D eslint eslint-config-airbnb
npm i -D eslint-plugin-jsx-a11y
npm i -D nodemon - 서버에서 바뀐 부분을 감지해서 알아서 서버를 껐다 켜줌

npm i express npm i axios npm i bcrypt@3.0.6 npm i cookie-parser npm i express-session npm i dotenv npm i cors npm i helmet hpp npm i morgan npm i multer npm i passport passport-local npm i sequelize sequelize-cli npm i -D nodemon npm i -D eslint 
eslint-config-airbnb npm i -D eslint-plugin-jsx-a11y

개발 환경에 nodemon 연결

  "scripts": {
    "dev": "nodemon"
  },

nodemon.json 파일 생성

{
    "watch" : [
        "index.js",
        "routes",
        "config",
        "passport",
        "models",
        "nodemon.json"
    ],
    // 변경 사항 주시할 파일 및 폴더
    "exec" : "node index.js",
    // 노드몬 실행 명령어
    "ext" : "js json"
}
  • exec의 경우 node로 해당 프로젝트의 index 파일을 실행한다는 의미이고 index 파일 안에는 서버를 재시작하는 코드가 있다.

HTTP 통신 구조

image.png

RESTAPI란?

REpresentational State Transfer의 약자로
"웹에 존재하는 모든 자원(이미지, 동영상, DB 등...)에 고유한 URL을 부여해 활용하는 것"을 의미한다.

profile
블로그 이전했습니다

1개의 댓글

comment-user-thumbnail
2020년 1월 16일

sequelize 란?

ORM(Object-relational Mapping)으로 분류, ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다.

npm install -g sequelize-cli
  • sequelize 명령어 사용 가능
sequelize init
  • 백엔드 서버에 필요한 폴더를 만들어준다.

만들어진 폴더 수정 사항

  • config/config.json : 디비 비밀번호, 이름 설정
  • models/index.js : config 파일을 불러와서 Sequelize를 초기화
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config.json')[env];
const db = {};

const sequelize = new Sequelize(config.database, config.username, config.password, config);

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

-> 자바스크립트로 db를 컨트롤 할 수 있게 된다.

  • models > post, user, comment, image.js를 만들면 각각의 테이블이 생성된다.
답글 달기