npm init
npm i express sequelize sequelize-cli mysql2 morgan
npm i -D nodemon
npx sequelize init
config/config.json
{
"development": {
"username": "root",
"password": "root",
"database": "sequelize",
"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"
}
}
modees/index.js 를 수정해준다.
models/index.js
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);
db.sequelize = sequelize;
module.exports = db;
MySQL Workbench에서
DB스키마를 생성해준다
이후 작업들은 전부 시퀄라이즈로 가능하다
서버실행시 일단 정상적으로 DB 접속이 가능하다.
데이터 자료 비교형
MySQL | Sequelize |
VARCHAR | STRING |
TINYINT | BOOLEAN |
DATETIME | dATE |
NOT NULL | allwNull : False |
UNIQUE | unique:true |
DEFAULT now() | Sequelize.NOW |
models/user.js
const Sequelize = require("sequelize");
module.exports = class User extends Sequelize.Model {
// init 메서드 테이블에 대한 설정을 하고
// associate 메서드는 다른 모델과의 관계를 적습니다
static init(sequelize) {
return super.init(
{
name:{
type : Sequelize.STRING(20),
allowNull : false,
unique: true
},
age:{
type: Sequelize.INTEGER.UNSIGNED //양수
},
comment: {
type: Sequelize.STRING(100),
allowNull: false,
},
},
{
sequelize, //해당 부분에 db.sequelize 객체가 들어간다.
timestamps: true, //true로 하면 createdAt과 updatedAt을 생성한다.
underscored: false, //기본적으로 테이블명과 컬럼명을 CamelCase로 바꾸는데 snake case로 변경해준다
modelName: "User", //모델 이름을 설정할 수있다
tableName: "User", //기본적으로 모델이름을 소문자및 복수형으로 만드는데 모델이 User면 users가된다
paranoid:false, // true로 설정하면 deletedAt 컬럼이 생긴다. 삭제시 완전히 지워지지 않고 deletedAt에 지운시각이 기록된다.
charset:'utf8mb4', //이모티콘까지 입력되게하려면 utf8mb4와 utf8mb4_general_ci오입력한다
collate:'utf8mb4_general_ci'
}
);
}
static associate(db){}
// VARCHAR STRING
// INT INTEGER
// TINYINT BOOLEAN
// DATETIME DATE
// NOT NULL allowNull: false
// UNIQUE unique:true
// DEFAULT now() defalutValue:Sequelize.NOW
};
models/index.js
const Sequelize = require('sequelize');
const User = require('./user');
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);
db.sequelize = sequelize;
db.User = User;
User.init(sequelize);
module.exports = db;
User.init 을 통해 테이블을 생성해준다
테이블이 정상적으로 생성이 되었다.
'Node.js > node sequelize' 카테고리의 다른 글
Node Sequelize ORM 다루기 - 외래키 생성하기, 관계형 설정하기 (1) | 2021.02.12 |
---|---|
Node Sequelize ORM 다루기 - DB 생성및 테이블 생성하기 (0) | 2021.02.11 |
node mysql sequelize(2) 연관 관계 설정하기 (0) | 2020.08.22 |