일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Util
- Network
- React
- macos
- mysql
- wireshark
- MongoDB
- typeorm
- AWS
- Kotlin
- python
- S3
- mongoose
- node.js
- ubuntu
- css
- algorithm
- Crawling
- TypeScript
- docker
- sequelize
- postman
- Express
- OOAD
- OS
- Android
- HTML
- linux
- Scheduling
- DATABASE
- Today
- Total
Seongwon Lim
[node.js] Sequelize 사용 방법 및 Mysql 연동하기 본문
What is Sequelize?
Sequelize는 Postgres, MySQL, MariaDB, SQLite 및 Microsoft SQL Server용 promise-based 기반의 Node.js ORM이다. 견고한 트랜잭션 지원을 지원하고, 지연 로딩, 읽기 복제 등 많은 기능을 제공한다.
ORM은 자바스크립트 객체와 데이터베이스 간 관계를 매핑해주는 도구라고 생각하면 된다. 관계형 데이터베이스는 테이블을 사용한다.
초기 설정
$ npm init // package.json 생성
$ npm i --save sequelize mysql2 // 모듈 설치
$ npm i -g sequelize-cli // 콘솔에서 sequelize 명령 가능하게 하는 모듈
$ sequelize init // 필요한 파일과 디렉토리를 자동 설치
위 명령어를 실행하면 config, migrations, models, seeders 4개의 디렉토리가 생성된다. 해당 디렉토리에 존재하는 파일에 대한 의미는 간략하게 설명하고자 한다.
- config.json : sequelize를 사용하기 위한 환경 설정
- models/index.js : Model(테이블)을 정의하고 관계를 설정
config.json 파일 수정하기
우리는 development 환경을 사용하기 때문에 development 부분만 수정하면 된다.
database: "nodejs" 를 통해서 필자는 스키마 이름을 nodejs로 정의했다.
{
"development": {
"username": "root",
"password": "password", // 사용자 비밀번호
"database": "nodejs", // 이 부분을 사용하고자 하는 스키마 이름으로 변경
"host": "127.0.0.1",
"dialect": "mysql"
},
...
}
<참고사항>
migrations
데이터베이스에 테이블에 필드 정보가 변경되거나 구조가 바뀌는 등과 같이 특수한 상황에서 사용된다.
seeders
seeders 파일은 서버를 실행하거나 콘솔 창에서 명령어를 실행 시 sequelize를 통해 DB에 데이터를 생성할 때 사용된다.
스키마(Database) 생성하기
터미널 콘솔에서 sequelize db:create 입력하기
→ MysqlWorkbench를 통해서 본 필자의 스키마 목록이다. nodejs가 추가된 것을 확인할 수 있다. 아직 테이블은 생성하지 않았으므로 Tables는 비어있는 것 또한 확인할 수 있다.
Model 생성하기
models/User.js으로 파일을 생성 후 모델을 정의한다.
module.exports = (sequelize, DataTypes) => {
const Users = sequelize.define("Users", {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
email: {
type: DataTypes.STRING(100),
validate: {
isEmail: true,
},
},
name: {
type: DataTypes.STRING(100),
},
}, {
charset: "utf8", // 한국어 설정
collate: "utf8_general_ci", // 한국어 설정
tableName: "Users", // 테이블 이름 정의
timestamps: true, // createAt, updateAt 활성화
paranoid: true, // deleteAt 옵션
});
return Users;
};
연결하기 : root directory에 app.js 생성 및 세팅하기
필자는 항상 Express 모듈을 사용하기 때문에 코드에서 해당 모듈을 불러온 것을 볼 수 있다. Express 모듈을 사용하지 않더라도 node.js와 데이터베이스를 연결하는 데에는 지장이 없다.
const express = require('express');
const app = express();
const { sequelize } = require('./models');
sequelize.sync({ force: false })
.then(() => {
console.log('데이터베이스 연결 성공');
})
.catch((err) => {
console.error(err);
});
app.get('/', function (req, res) {
res.send('Hello Express')
})
app.listen(3000, () => console.log('start..'));
연결이 잘 된 것을 확인할 수 있다.
실행 명령어로 node index.js가 아니라 npm start를 사용하려면 package.json을 다음과 같이 수정하면 된다.
"name": "sequelize-example",
"version": "1.0.0",
"description": "",
"main": "app.js", // 해당 부분을 index.js에서 app.js로 변경
"scripts": {
"start": "node app.js", // 해당 부분 추가
"test": "echo \"Error: no test specified\" && exit 1"
},
터미널을 이용하여 테이블 생성 확인하기
mysql에 접속 및 nodejs 스키마 사용하는 과정은 생략했다.
User.js에서 정의한 대로 필드가 생성된 것을 확인할 수 있다.
시간이 된다면 다음 포스팅에서는 정의한 모델을 이용해서 CURD를 해보는 예제를 살펴볼 예정이다.
출처
'Node.js' 카테고리의 다른 글
[node.js] Sequelize를 이용하여 Mysql CRUD 기능 구현하기 (0) | 2022.05.10 |
---|---|
[node.js] Sequelize를 이용하여 Mysql Create 구현하기 (0) | 2022.05.10 |
[node.js] Mysql 다중쿼리 처리하기 (0) | 2022.05.10 |
[node.js] Bcrypt를 이용한 패스워드 암호화 (0) | 2022.05.10 |
[node.js] Nodemon 설치 및 사용 (0) | 2022.05.10 |