Node.js

시퀄라이즈 ORM와 Nodejs에 mysql 연결

쿠와와 2020. 12. 28. 16:51

 SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리

  • ORM: Object Relational Mapping: 객체와 데이터를 매핑(11 짝지음)
  • MySQL 외에도 다른 RDB(Maria, Postgre, SQLite, MSSQL)와도 호환됨
  • 자바스크립트 문법으로 데이터베이스 조작 가능

시퀄라이즈 예제는 https://github.com/zerocho/nodejs-book/tree/master/ch7/7.6/learn-sequelize

  • 프로젝트 세팅 후, 콘솔을 통해 경로로 이동한 후 package.json 작성

 

nodejs 에 mysql 연결하기!! 
시퀄라이즈 명령어 사용하기 위해 sequelize-cli 설치
  • mysql2MySQL DB가 아닌 드라이버(Node.jsMySQL을 이어주는 역할)

  • npx sequelize init으로 시퀄라이즈 구조 생성

 

그후 config 폴더 안의 config.json 파일을 자신의 sql에 맞게  작성 

{
  "development": {
    "username": "root",
    "password": "password",
    "database": "nodejs",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": null,
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}

 

연결이 잘 되어 있는지 확인해보자!

const express = require('express');
const path = require('path');
const morgan = require('morgan');
const nunjucks = require('nunjucks');

const { sequelize } = require('./models');
const indexRouter = require('./routes');
const usersRouter = require('./routes/users');
const commentsRouter = require('./routes/comments');

const app = express();
app.set('port', process.env.PORT || 3001);
app.set('view engine', 'html');
nunjucks.configure('views', {
  express: app,
  watch: true,
});

// ---------------------------------------------------- //
// 데이터 베이스 연결 sequelize를 통해서 
sequelize.sync({ force: false })
  .then(() => {
    console.log('데이터베이스 연결 성공');
  })
  .catch((err) => {
    console.error(err);
  });
// ---------------------------------------------------- //

app.use(morgan('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/comments', commentsRouter);

app.use((req, res, next) => {
  const error =  new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
  error.status = 404;
  next(error);
});

app.use((err, req, res, next) => {
  res.locals.message = err.message;
  res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
  res.status(err.status || 500);
  res.render('error');
});

app.listen(app.get('port'), () => {
  console.log(app.get('port'), '번 포트에서 대기 중');
});

연결이 잘 되어 있다면 아래와 같이 출력될 것입니다. 

 

 

'Node.js' 카테고리의 다른 글

시퀄라이즈 쿼리  (0) 2020.12.30
시퀄라이저 모델 자료형  (0) 2020.12.29
템플릿 엔진 사용하기  (0) 2020.12.23
라우터 객체로 라우터 분리와 req, res 객체 살펴보기  (0) 2020.12.22
미들웨어  (0) 2020.12.21