반응형
Sequelize 란?
- Node.js에서 DB와 연결할 때, 쿼리를 몰라도 좀 더 편하게 사용할 수 있도록 도와주는 모듈
- 전에 했던 MySQL과 연결 예제을 Sequelize를 사용해 진행
- MySQL이 아닌 다른 DB를 사용할 때도 Sequelize 사용 가능
사용 방법
- 'npm i sequelize'를 통해 sequelize 모듈 설치 (mysql2 모듈은 설치 완료됬다고 가정)
- 'npm i -D sequelize-cli'를 통해 sequelize-cli 모듈 설치 ( -D : 개발용)
- 'npx sequelize init'을 통해 sequelize 구조 생성
- 아래의 폴더들이 자동으로 생성됨
- 새로 생성 된 config 폴더의 config.json 파일에 들어가서 다음 부분을 자신의 DB 정보에 맞게 수정
- username, password, database 수정
- models 폴더에 student2.js 파일 생성 후 다음과 같이 코드 입력
module.exports = (sequelize, DataTypes) => {
return sequelize.define('student2', {
name: {
type: DataTypes.STRING(30),
allowNull: false,
},
age: {
type: DataTypes.INTEGER,
allowNull: false,
},
height: {
type: DataTypes.DOUBLE,
allowNull: false,
},
},{
charset: 'utf8',
collate: 'utf8_general_ci', // 이걸 해줌으로써 DB에 한글사용 가능
});
}
- 이 때 sequelize가 id(primary key)와 createdAt, updatedAt을 자동으로 생성해줌
- models 폴더의 index.js 파일에 다음 코드 추가
- 맨 밑에 있는 module.exports = db; 윗부분에 추가
db.Student2 = require('./student2')(sequelize, Sequelize);
- main 파일인 test.js에 Sequelize 객체 생성 및 DB 연결
var express = require('express');
var app = express();
var db = require('./models');
db.sequelize.sync();
app.get('/', function(req, res){
db.Student2.create({
name: 'Tom',
age: 20,
height: 181.3,
});
});
app.listen(52273, function() {
console.log('Server Running at http://127.0.0.1:52273');
});
- 다음과 같이 코딩 후 test.js를 실행하면 Student2s 라는 테이블이 생성됨
- 기존에 테이블이 존재하면 다시 생성 X
- http://127.0.0.1:52273에 접속하면 name, age, height가 각각 'Tom', 20, 181.3인 정보가 입력됨
활용 방법
- 사실 저렇게 값을 하나씩 넣어주는 것은 의미가 거의 없고, 값을 입력받고 DB에 넣어줄 수 있는 기능이 중요하다고 생각해서 코드를 수정함
- RequestBody에 name, age, height 값을 넣어주고 post하면 DB에 넣어주는 기능
var express = require('express');
var app = express();
var db = require('./models');
db.sequelize.sync();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.post('/newstudent', async(req, res) => {
try{
console.log(req.body);
const newStudent = await db.Student2.create({
name: req.body.name,
age: req.body.age,
height: req.body.height,
});
res.status(200).json(newStudent);
} catch(err) {
console.log(err);
}
});
app.listen(52273, function() {
console.log('Server Running at http://127.0.0.1:52273');
});
- 이를 활용하여 ['Alice', 18, 163.4], ['Harry', 19, 175.7] 같이 새로운 정보를 삽입할 수 있음.
- 아래와 같이 값이 추가되는 것을 확인할 수 있음
- create 뿐만 아닌 find, update 등 다양한 기능들도 사용 가능
반응형
'Node.js' 카테고리의 다른 글
[Node.js + Vue.js] 게시판 만들기 2. Vue.js를 사용한 Front Server 구현 (0) | 2021.12.11 |
---|---|
[Node.js + Vue.js] 게시판 만들기 1. 설계 & 결과 (4) | 2021.12.10 |
[Node.js] DB(MySQL)과 연결하기 (0) | 2021.12.03 |
[Node.js + Vue.js] axios 통신, cors모듈 (0) | 2021.12.02 |
[Node.js] 페이징 라우팅 기능, router 분리(모듈화), params, query (0) | 2021.12.01 |