sql를 따로 배워야 하는듯... 이해못함...
데이터를 영구적으로 저장
MySQL: 관계형 데이터베이스
"C:\Program Files\MySQL\MySQL Server 8.0\bin"C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -h localhost -u root -pjs로 sql 조작할 수 있게 하는 도구
초기 터미널 설치
npm i express morgan nunjucks sequelize sequelize-cli mysql2
npm i -D nodemon
npx sequelize init : 시퀄라이즈 구조 초기화
config 파일에 password 부분을 본인 password로 변경하기
"development": {
"username": "root",
"password": "이부분!!!",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
}
데이터베이스 연결
sequelize.sync({ force: false })
.then(() => {
console.log('데이터베이스 연결 성공');
})
.catch((err) => {
console.error(err);
});
테이블 관계
코드예제: 모델 만드는 방법 + 테이블 관계 알아보자
//models/user.js
const Sequelize = require('sequelize');
class User extends Sequelize.Model {
static initiate(sequelize) {
User.init({
name: {
type: Sequelize.STRING(20),
allowNull: false, //notnull
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' });
}
};
module.exports = User;
comment.js에서는 hasMany가 아닌 belongsTo가 쓰인다.
//models.comment.js
static associate(db) {
db.Comment.belongsTo(db.User, { foreignKey: 'commenter', targetKey: 'id' });
}