react와 express 서버 연동 익히기 4편 -sequelize를 이용한 DB와 서버 연동-
1. sequelize 설치
npm install sequelize path로 sequelize, path 설치
sequelize는 node.js 기반의 ORM
쿼리를 날려서 데이터베이스에 접근하는 것이 아니고 체계적이며 깔끔하고, 생산적으로 DB관리를 가능하게 해준다.
2. Models 폴더 생성
백엔드에 DB에 추가할 테이블들의 정보를 서버에 전달해주는 models 폴더 생성
여기에 작성하는 js 파일들은 마치 장고의 모델처럼 서버와 연동되면서 테이블 역할을 한다
서버가 이 modles 디렉토리를 읽기 위해 디렉토리의 테이블 js 파일들을 관리하고 연결하는 index.js 파일이 필요
models 안에 index.js 파일을 생성하고 코드 작성
'use strict';
const path = require('path');
const Sequelize = require('sequelize')
3. db.js를 json으로 변환
이전에 DB 정보를 config/db.js에서 가져왔다
하지만 js파일은 네트워크 상에서 데이터를 주고받을 때 효율적인 성능을 띄지 못한다.
그래서 데이터를 주고받을 때 텍스트 형식의 json 파일이 필요하다
config/db.js를 지우고 다음과 같이 config/db.json을 생성
여기서 dialect는 DB 종류를 뜻한다
4. json 파일 읽기
그리고 models/index.js에서 입력한 json 파일을 읽어준다
여기서 path 모듈에 여러 인자값 __dirname, .. , config, db.json이 들어가있는데,
..은 경로의 이동값으로 현 디렉토리의 밖에 있다
config는 현재 디렉토리 안에 있는 config로 들어가고
db.json은 config안의 db.json을 가져온다
'use strict';
const path = require('path');
const Sequelize = require('sequelize')
const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname, '..', 'config','db.json'))[
env
]
const db = {};
이제 config 안에는 DB를 연결할 수 있는 정보들이 할당되어 있다
이 config 정보들을 sequelize와 연동한다.
다음 코드를 index.js에 추가 작성
let sequelize = new Sequelize(
config.database,
config.username,
config.password,
config,
{
define: {
charset: 'utf8',
collate: 'utf8_general_ci'
}
}
)
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.log('Unable to connect to the database: ', err);
})
db.secret = '(9*)5$&!3%^0%^@@2$1!#5@2!4'
module.exports = db;
앞에서 DB의 정보를 할당한 config 변수를 이용해, sequelize에 DB의 정보를 할당하는 코드를 작성
위에서 db.sequelize.authenticate().then() ~~~ 코드를 보면..
연동이 성공하면 "connection has been established successfully"
실패하면, "unable to connect to the database:"
5. 서버와 sequelize 연동
server/server.js로 돌아가서, 기존의 DB코드는 삭제하고
다음 코드로 sequelize와 연결
const sequelize = require('./models').sequelize;가 중요?
const express = require('express')
const app = express();
const sequelize = require('./models').sequelize;
sequelize.sync();
app.use(express.json());
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
console.log(`Server On : http://localhost:${PORT}/`)
})
이제 시작해서 "Connection has been established successfully"가 나오면 성공
참조
React로 블로그 만들기 05 : RDS(Mysql) 연동 2-1 (Sequelize 연동하기) : 네이버 블로그 (naver.com)
React로 블로그 만들기 05 : RDS(Mysql) 연동 2-1 (Sequelize 연동하기)
'Sequelize'는 Node.js 기반의 ORM 입니다. 앞서 우리가 쿼리를 날려 데이터베이스에 접근...
blog.naver.com
'프로그래밍 > node.js' 카테고리의 다른 글
react와 express 서버 연동익히기 6편 -DB에 데이터 추가- (0) | 2023.01.18 |
---|---|
react와 express 서버 연동 익히기 5편 -sequelize로 테이블 생성하기- (0) | 2023.01.18 |
react와 express 서버연동 익히기 3편 -mysql DB연동- (0) | 2023.01.18 |
react와 express 서버연동 익히기 2편 -express 서버와 react 클라이언트 연동- (0) | 2023.01.18 |
react와 express 서버연동 익히기 1편 -express 서버 구축- (0) | 2023.01.18 |