SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리
- ORM: Object Relational Mapping: 객체와 데이터를 매핑(1대1 짝지음)
- 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 설치
- mysql2는 MySQL DB가 아닌 드라이버(Node.js와 MySQL을 이어주는 역할)
- 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 |