


초기에 index.js 파일에 들어가보면 여러 코드가 찍혀져 나오는데 모두 지운후,
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config.json')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);
db.sequelize = sequelize;
module.exports= db;

const morgan = require('morgan');
const nunjucks = require('nunjucks');
const { sequelize } = require('./models');
sequelize.sync({ force: true })
.then(() => {
console.log("데이터 베이스 연결 성공")
})
.catch((err) => {
console.log(err);
});

테이블을 만드는 방법은 크게 3가지
1) CLI 창 ( create table ~)
2) WorkBench 와 같은 데이터베이스 관리 툴
3) 모델
시퀄라이즈 사용하기 위한 공식 문서에서 제공하는 코드 입력
User는 모델 명 (시퀄라이즈에서의 모델이 MySQL에서는 테이블로 불림)
문법 관련 해서는 mysql 에서는 INT , 시퀄라이즈에서는 INTEGER
mysql 에서는 VARCHAR , 시퀄라이즈에서는 String
mysql 에서는 boolean 처리 1 OR 0 , 시퀄라이즈에서는 true or false
created_at 은 mysql 에서는 DATETIME, 시퀄라이즈에서는 DATE
또한 Id 는 자동으로 생성해주기 때문에 별도의 속성을 넣어주지 않아도 됨.
const Sequelize = require('sequelize');
module.exports = class User extends Sequelize.Model {
static init(sequelize) {
return super.init({
name: {
type: Sequelize.STRING(20),
allowNull: false,
unique: true,
},
age: {
type: Sequelize.INTEGER.UNSIGNED,
allowNull: false,
},
married: {
type: Sequelize.BOOLEAN,
allowNull: false,
},
comment: {
type: Sequelize.TEXT,
allowNull: true,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
}, {
sequelize,
timestamps: false,
underscored: false,
modelName: 'User',
tableName: 'users',
paranoid: false,
charset: 'utf8',
collate: 'utf8_general_ci',
});
}
static associate(db) {
db.User.hasMany(db.Comment, { foreignKey: 'commenter', sourceKey: 'id' });
}
};
const User = require('./users');
User.init(sequelize);
위에서 sequelize 를 new 객체로 생성해줬는데 그것을 init 으로 받는다.
그렇게 되면 users.js 파일의 sequelize 객체로 인지되는 것이다.
즉 , 모델(mysql 로는 테이블) 이랑 연결 객체랑 연결한 것.