1. 시퀄라이즈 ORM
SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리
- ORM : Object Relational Mapping : 객체와 데이터를 매핑(1 대 1 )
- MySQL 외에도 다른 RDB(Maria, Postgre, SQLite, MSSQL)와도 호환
- 자바스크립트 문법으로 데이터베이스 조작 가능
2. 시퀄라이즈 CLI 사용하기
시퀄라이즈 명령어 사용하기 위해 sequelize-cli 설치
Node.js 와 MySQL 을 이어주는 드라이버 mysql2 설치
- 명령어 : npm i sequelize-cli
npm i mysql2
npx sequelize init // 시퀄라이즈 구조생성
동시에 설치가능 npm i express morgan nunjucks sequelize sequelize-cli mysql2
ps. mysql, mysql2 두가지 차이점은 mysql2는 promise와 몇가지 편한 api 를 지원한다는 큰차이점이 있다.
3. 시퀄라이즈 모델 사용
const Sequelize = require('sequelize');
module.exports = class User extends Sequelize.Model {
static init(sequelize) {
return super.init({ // 첫번째 인수 컬럼정의
// id가 자동으로 생성 (id : Sequelize.INTEGER)을 생략
name: {
type: Sequelize.STRING(20), // VARCHAR(20)
allowNull: false,
unique: true,
},
age: {
type: Sequelize.INTEGER.UNSIGNED,
allowNull: false,
},
married: {
type: Sequelize.BOOLEAN, // TINYINT
allowNull: false,
},
comment: {
type: Sequelize.TEXT,
allowNull: true,
},
created_at: {
type: Sequelize.DATE, // DATETIME, MYSQL DATE -> Sequelize DateOnly
allowNull: false,
defaultValue: Sequelize.NOW,
},
}, { // 두번째 인수 모델 설정값
sequelize,
timestamps: false, // true 이면 createdAt, updateAt 설정 생성 수정 시간을 자동으로 변경
underscored: false, // ex) created_at <-> createAt
paranoid: false, // true 이면 soft delete 기능 사용 삭제했을때 일정기간 데이터 유지
modelName: 'User',
tableName: 'users',
charset: 'utf8', // utf8mb4 : 이모티콘 사용가능
collate: 'utf8_general_ci',
});
}
static associate(db) {
db.User.hasMany(db.Comment, {
foreignKey: 'commenter', sourceKey: 'id' // 외래키와 연결된 주키
});
/*
db.Comment.belongsTo(db.User, {
foreignKey: 'commenter', targetKey: 'id' // 주키와 연결된 외래키
});
*/
}
db.Post.belongsToMany(db.Hashtag, { through : 'PostHashtag' });
db.Hashtag.belongsToMany(db.Post, { through : 'PostHashtag' });
// 다대다 관계는 중간 테이블이 생김 (PostHashtag) ┘
'SQL' 카테고리의 다른 글
Mysql 설치시 server has failed 에러 해결 방법 중 하나 (0) | 2021.12.27 |
---|---|
MYSQL - NodeJS 4 (0) | 2021.04.09 |
MYSQL - NodeJS 2.1 (0) | 2021.04.08 |
MYSQL - NodeJS 2 (0) | 2021.04.08 |
MYSQL - NodeJS (0) | 2021.04.07 |
댓글