728x90
반응형
테이블 생성도 그렇고 쿼리 사용도 그렇고 직접 하는 방법도 좋지만 ORM을 활용해 편리하게 하고 싶어서 찾아보다가 sequelize를 많이 쓰는 것 같아 나도 사용해보기로 했다.
역시 우선적으로 해야 할 것은 sequelize 설치이다.
$ npm install sequelize --save
그리고 sequelize-cli 도 설치한다. 이것은 sequelize를 더 쉽게 조작하기 위한 것이다.
$ npm install -g sequelize-cli
-g 옵션을 통해 글로벌하게 사용할 수 있도록 설치해준다.
만약 아래와 같은 에러가 난다면 -g 옵션으로 설치하는데에 있어서 권한이 없는 문제이므로 명령어의 맨 앞에 sudo를 붙여주면 문제없이 설치할 수 있다.
$ sudo npm install -g sequelize-cli
모두 설치가 완료되었으면 초기화 해주는 명령어를 입력한다.
$ sequelize init
그러면 여러 폴더들과 파일들이 생성된 것을 확인할 수 있다.
그중 /config/config.json 파일을 먼저 확인해보자.
{
"development": {
"username": "root",
"password": null,
"database": "database_development",
"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"
}
}
해당 파일이 환경별 데이터베이스 접속 정보를 다루고 있는 것을 확인할 수 있다.
이전 글에서 index.js에 입력했던 접속 정보를 config.json 파일에서 development 환경 부분에 입력하자.
그리고 /models/index.js 파일을 살펴보자.
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
간단하게 소스를 파악해보면 config.json을 통해 환경에 맞는 데이터 베이스에 연결하고 models 폴더 내에 있는 파일들을 읽고, 그것들을 모델로 정의해주고, models에 원하는 테이블 이름을 파일의 이름으로 js 파일로 만들어 준 후 모델을 정의하면 테이블이 만들어진다.
728x90
반응형
'Node.js > express' 카테고리의 다른 글
[Node.js] sequelize 사용하기 2 (0) | 2021.03.22 |
---|---|
[Node.js] Mysql 연동하기 (0) | 2021.03.22 |
[Node.js] Express 프레임워크를 이용해 Hello World 만들기 (0) | 2021.03.19 |
[Node.js] WebStorm 으로 프로젝트 만들기 (0) | 2021.03.19 |