// sequelize 라이브러리에서 DataTypes 과 Model 가져와 사용
// DataTypes : 데이터베이스 컬럼의 데이터 유형 정의
// Model 클래스 : 데이터베이스 테이블과 상호 작용
const {DataTypes,Model} = require("sequelize");
// User 클래스는 Model 클래스를 상속받고
class User extends Model{
// init 메서드를 정의
static init(sequelize) {
// 부모의 init 메서드를 가져와서 모델 설정
return super.init(
{
user_id :{
// DataTypes 을 STRING으로 설정
type : DataTypes.STRING,
// 값이 Null 될 수 없음.
allowNull : false,
// 값은 고유값을 가져야 함.
unique: true
},
},{
sequelize,
// 카멜표기법으로 사용
underscored : false,
// createdAt, updatedAt 를 표기
timestamps : true,
// 모델 이름
modelName : "Users",
// 테이블 이름
tableName : "users",
// 문자 인코딩 및 규칙 설정.
charset : "utf8",
collate : "utf8_general_ci"
}
)
}
// assicoate 메서드 정의
static assicoate(db) {
// User 테이블 과 Real_estate 테이블이 1 : N 관계고.
// Real_estate 테이블의 seller 컬럼의 값은 User 테이블의 id를 참조한다. (외래키 설정)
db.User.hasMany(db.Real_estate, { foreignKey : "seller", sourceKey : "id"});
}
}
// 클래스를 내보내서 index.js 에서 한번에
module.exports = User;
hasMany 로 설정했으면,
real_estate.js 에서도 설정을 해줘야한다.
static assicoate(db) { // belongsTo를 통해 Real_estate 테이블의 seller 컬럼을 // User 테이블의 id 값을 참조하는 외래키로 설정. db.Real_estate.belongsTo(db.User, { foreignKey: "seller", targetKey: "id" });
DATABASE_NAME = 스키마 이름
DATABASE_USERNAME = DB 계정 이름
DATABASE_PASSWORD = DB 계정 비밀번호
DATABASE_HOST = 127.0.0.1
const config = {
dev: {
database: process.env.DATABASE_NAME,
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
host: process.env.DATABASE_HOST,
dialect: "mysql",
timezone: "+09:00",
dateStrings: "date",
},
};
module.exports = config;
const Sequelize = require("sequelize");
const bcrypt = require("bcrypt")
const config = require("../config");
const User = require("./users");
const Real_estate = require ("./real_estate");
// Sequelize 인스턴스를 생성하고 설정 파일을 통해 데이터베이스에 연결
const sequelize = new Sequelize(config.dev);
// 데이터베이스 모델과 연결할 객체 db를 생성하고, 모델을 db 객체의 속성으로 설정
const db = {};
db.sequelize = sequelize;
db.User = User;
db.Real_estate = Real_estate;
// 모델을 초기화
User.init(sequelize);
Real_estate.init(sequelize);
Transaction.init(sequelize);
// 모델 간의 관계를 설정
User.associate(db);
Real_estate.associate(db);
// db 객체 내보내기
module.exports = db;
const dot = require("dotenv").config();
const {sequelize} = require("./models");
const express = require("express");
const app = express();
app.use(express.urlencoded({extended : false}));
sequelize
.sync({force : false})
.then(()=>{
console.log("database connect")
})
.catch((err)=>{
console.log(err);
});
app.listen(8080, ()=>{
console.log("Server on");
})