# sequelize 란?
자바스크립트 문법으로 데이터베이스 조작가능.
# 시작
- npm i sequelize sequelize-cli mysql2 설치
- npx sequelize init 치면 폴더 여러개 생길거임.
congif : 쓸 데이터베이스 정보. 보통은 password, database를 조작함.
models : 여기에 데이터베이스 테이블 js 파일을 집어넣음. 단수형으로.
seeder : 모름
migrations : 모름
# 제로초 예제
https://github.com/ZeroCho/nodejs-book/blob/master/ch7/7.6/learn-sequelize/models/index.js
GitHub - ZeroCho/nodejs-book
Contribute to ZeroCho/nodejs-book development by creating an account on GitHub.
github.com
# 실습하기
1. config.json의 데이터베이스 정보를 넣어준다.
암호랑 데이터베이스이름 등 수정해줬음.
config.json에 데이터베이스는 실제로 안만들어지더라.
이건 워크벤치에서 만들어줬다.
2. models(테이블관리)
# index.js
const Sequelize = require('sequelize');
const Address = require('./address');
// const Comment = require('./comment');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.Address = Address;
Address.init(sequelize);
module.exports = db;
# address.js
const Sequelize = require('sequelize');
module.exports = class Address extends Sequelize.Model {
static init(sequelize) {
return super.init({
customer : {
type: Sequelize.STRING(20),
allowNull: false,
unique: true,
},
address: {
type : Sequelize.STRING(30),
allowNull : false,
},
comment: {
type: Sequelize.TEXT,
allowNull: true,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
}, {
sequelize,
timestamps: false,
underscored: false,
modelName: 'Address',
tableName: 'addresses',
paranoid: false,
charset: 'utf8',
collate: 'utf8_general_ci',
});
}
};
이렇게 설정을 해주자.
index.js는 전체관리인듯. 실제 테이블은 없음.
3. 서버파일에서~
const { sequelize } = require('./models');
const Address = require('./models/address');
이렇게 sequelize가져오고 테이블 js 파일 가져온다음
시퀄라이즈 싱크해줘야함.
sequelize
.sync({ force: false })
.then(() => {
console.log("데이터베이스 연결 성공");
})
.catch((err) => {
console.error(err);
});
그다음 아래 코드입력하면
Address.create({
customer : '1',
address : '햇님동 달빛길',
comment : '친구야~'
})
데이터 입력됨.
++추가해서
위에 Address테이블 가져온건 프로미스로 되더라.
console.log(Address.findAll(), '여기')
이게 프로미스 펜딩으로 나옴.
데이터 보려면
const addresses = await Address.findAll();
console.log('여기', addresses[0].dataValues)
이렇게 해야함.