실습_46을 sequelize를 이용해 구현해보기
기본적인 Sequelize 사용법 및 코드 설명은 Sequelize 사용하기 를 참고해주세요.
mysql 을 사용한 것을 sequelize 로 바꿔주기 위해 controller 부분과 model 부분만 바꿔주었다. 대신 이 경우 mysql 을 사용했을 때와 같은 형태의 데이터를 controller 에서 프론트로 보내주어야 한다.
테이블은 다음과 같은 구조로 되어있다.

const User = (Sequelize, DataTypes) => {
const model = Sequelize.define(
'user',
{
name: {
type: DataTypes.STRING(20),
allowNull: false
},
id : {
type: DataTypes.STRING(10),
allowNull: false,
primaryKey: true
},
pw: {
type: DataTypes.STRING(10),
allowNull: false
},
email: {
type: DataTypes.STRING(20)
}
},
{
timestamps: false,
tableName: 'user',
freezeTableName: true
}
);
return model;
}
module.exports = User;
const Sequelize = require("sequelize");
const config = require("../config/config.json")["development"];
const db = {};
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config
);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.Visitor = require("./Visitor")(sequelize, Sequelize);
// 이 부분이 추가되었다.
db.User = require("./User")(sequelize, Sequelize);
module.exports = db;
controller 부분을 바꿔주면 된다. mysql 을 사용했을 때는 모델에서 sql 문을 작성해 결과를 가져왔지만, sequelize 를 이용하면 controller 부분에서 sequelize 문법으로 데이터베이스를 조작할 수 있다.
// mysql 이용
exports.register = (req, res) => {
User.register(req.body, function(result) {
console.log(result);
res.send("성공적으로 회원가입 되었습니다. 가입하신 정보로 로그인해주세요.");
});
}
// sequelize 이용
exports.register = (req, res) => {
let object = {
name : req.body.name,
id: req.body.id,
pw: req.body.pw,
email: req.body.email
}
models.User.create(object)
.then((result) => {
console.log(result);
res.send("성공적으로 회원가입 되었습니다. 가입하신 정보로 로그인해주세요.");
})
}
// mysql 이용
exports.login = (req, res) => {
User.login(req.body, function(result) {
console.log(result);
if (result.length == 0) {
res.send(false);
} else {
res.send(true);
}
});
}
// sequelize 이용
exports.login = (req, res) => {
models.User.findOne({
where: {id: req.body.id, pw: req.body.pw}
}).then((result) => {
console.log(result);
if (result == null) {
res.send(false);
} else {
res.send(true);
}
})
}
// mysql 이용
exports.profile = (req, res) => {
User.get_user(req.body, function(result) {
console.log(result);
res.render("profile", {data: result[0]});
});
}
// sequelize 이용
exports.profile = (req, res) => {
models.User.findOne({
where: {id: req.body.id}
}).then((result) => {
console.log(result);
res.render("profile", {data: result});
})
}
// mysql 이용
exports.edit = (req, res) => {
User.update(req.body, function(result) {
console.log(result);
res.send("회원정보가 수정 되었습니다.");
});
}
// sequelize 이용
exports.edit = (req, res) => {
let newObj = {
name : req.body.name,
pw: req.body.pw,
email: req.body.email
}
models.User.update(newObj, {where: {id: req.body.id}})
.then((result) => {
console.log(result);
res.send("회원정보가 수정 되었습니다.");
})
}
// mysql 이용
exports.delete = (req, res) => {
User.delete(req.body, function(result) {
console.log(result);
res.send("회원 탈퇴되었습니다.");
});
}
// sequelize 이용
exports.delete = (req, res) => {
models.User.destroy({where: {id: req.body.id}})
.then((result) => {
console.log("delete : ", result );
res.send("성공적으로 탈퇴되었습니다.");
})
}
완성 코드 👈🏻 깃허브