ํฌ์ค์ฝ X ์ฝ๋ฉ์จ 7๊ธฐ 6์ฃผ์ฐจ ch2. Sequelize
ํฌ์ค์ฝ X ์ฝ๋ฉ์จ 7๊ธฐ 6์ฃผ์ฐจ์
Sequelize ์ ๋ํ ๋ด์ฉ์ ๋๋
๋ฆฌ๋ทฐ ํด๋ณด๋๋ก ํ๊ฒ ๋ค..
Sequelize ๋?
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์์์ SQL๋ก ๋ณํํด์ค๋ค.
- DB์์
์ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ฃผ๋
ORM๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋
// ์ํ๋ผ์ด์ฆ ํจํค์ง, ์ํ๋ผ์ด์ฆ ๋ช
๋ น์ด ์คํ, mysql๊ณผ ์ํ๋ผ์ด์ฆ ์ฐ๊ฒฐํ๋ ๋๋ผ์ด๋ฒ (๋๊ตฌ)
npm install sequelize sequelize-cli mysql2
//sequelize init ๋ช
๋ น์ด ํธ์ถ
npx sequelize init
- ๋ช
๋ น์ด๋ฅผ ์คํ์ํจ ํ, ํด๋น ํด๋์ ํจํค์ง๊ฐ ์ค์น๋์๋์ง ํ์ธํ๋ค!
์ค์น๊ฐ ๋๋ฌ๋ค๋ฉด
sequelize ๋ชจ๋ธ์ ์ ์ํด์ผ ํ๋ค!
- mysql์์ ์ ์ํ ํ
์ด๋ธ์ sequelize์์๋
์ ์ ํ์ -> mysqlํ
์ด๋ธ๊ณผ sequelize์ ๋ชจ๋ธ์ด ๋์๋๋ค.
sequelize visitorํ ์ด๋ธ ์ ์ ์์!
- ์ ์ฝ๋๋ sequelize.define()๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ
"visitor"๋ผ๋ sequelize๋ชจ๋ธ์ ์ ์ํ๋ jsํจ์์ด๋ค.
1. ํจ์ ์ ์ธ
const visitor = function (Sequelize, DataTypes) {
//function body
};
- ์ด ์ฝ๋๋ sequelize ๋ฐ dataTypes๋ผ๋ ๋๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋
visitor๋ผ๋ ํจ์๋ฅผ ์ ์ธํ๋ค.
์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ sequelize ๋ฐ DataTypes๊ฐ์ฒด
2. Sequelize.define():
return Sequelize.define("visitor", {
//model properties
});
- Sequelize.define()๋ฉ์๋๋ visitor๋ผ๋ sequelize๋ชจ๋ธ์ ์ ์ํ๊ธฐ ์ํด ํธ์ถํ๋ค.
3. ๋ชจ๋ธ ์์ฑ :
{
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
// More properties can be defined here
}
- ๋ชจ๋ธ ์์ฑ์ ๊ฐ์ฒด ๋ด์์
ํค-๊ฐ ์์ผ๋ก ์ ์๋๋ค.
์ด ์ฝ๋ ์กฐ๊ฐ์์ id๋ผ๋ ๋จ์ผ ์์ฑ์ด ์ ์๋๋ค.
- id : 'visitor'ํ
์ด๋ธ์ ์ด์ด๋ฆ
- type : DataType.INTEGER : ์ด์ ๋ฐ์ดํฐ ์ ํ์ด
INTEGER๋ก ์ค์ ๋์ด ์ ์ ๊ฐ์์ ์ฅํ ๊ฒ์์ ๋ํ๋
- allowNull : false: "id"์ด์ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ก ์ ์ธ
- primaryKey : true: "id"์ด์ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ก ์ ์ธ
- autoIncrement : true: id์ด์ด ํ
์ด๋ธ์ ์ฝ์
๋ ๊ฐ๊ฐ์ ์ ๋ ์ฝ๋์ ๋ํด
๊ฐ์ ์๋์ฆ๊ฐํ๋๋ก ์ง์
Sequelize ์ฟผ๋ฆฌ๋ฌธ
1๋ฒ.
//๋ฑ๋ก
exports.CpostVisitor = (req, res) => {
models.visitor
.create({ name: req.body.name, comment: req.body.comment })
.then((result) => {
res.send({
result: true,
id: result.dataValues.id,
name: req.body.name,
comment: req.body.comment,
});
});
};
- model.visitor.create()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฉ๋ฌธ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑํ๋ค
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ฑ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ,
์์ฑ๋ ๊ฒฐ๊ณผ ๊ฐ์ฒด(result)์ datavalues์์ฑ์ ์ฌ์ฉํ์ฌ
๋ฐฉ๋ฌธ์์ id์ ์์ฒญ์ผ๋ก ๋ฐ์ ์ด๋ฆ๊ณผ ๋๊ธ์ ํฌํจํ๋
jsom์๋ต์ ์ ์กํ๋ค.
2๋ฒ.
exports.CpostVisitor = (req, res) => {
visitor.MpostVisitor(req.body, (value) => {
res.send({
result: true,
id: value,
name: req.body.name,
comment: req.body.comment,
});
});
};
1๋ฒ๊ณผ 2๋ฒ ์ฝ๋์ ์ฐจ์ด!
- 1๋ฒ ์ฝ๋๋ Sequelize๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฉ๋ฌธ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๋ฐฉ์์ด๊ณ ,
2๋ฒ ์ฝ๋๋ visitor.MpostVisitor()ํจ์๋ฅผ ํธ์ถํ์ฌ
๋น๋๊ธฐ ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
์ด๋ง..
๊ธ์ด ์ฌ์ฌํ๋ ์ต๊ทผ ๋จธ๊ทผ
์์์ฌ์ง ์ด๋ผ๋,,
์ธ์ ๋จน์ด๋ ๋ง์๋
์ฝ๋ก~,,
์ฅ์ฌ์ ์ ์ดฌ์์จ๋ค๊ณ ์๋ ์ง์ธ ์ ์ง์
ํ์๋ฆฌ ํ๋ฌ ๊ฐ๋๋
์์ฃผ , ์ ๋ค ๊ณต์ง๋ก ๋จธ๊ฒ๋น ใ ใ
์กด๋งํฑ ์ด์๋ค
๋ค๋น์ฐ ์ง ๋๊ฐ๋ ๊ธฐ๋
์ผ๋ก
๋์๊ฒ ๊ท์นด์ธ ๋ฅผ ์ฌ์ฃผ์๋ค..
์ง์ง ์กด๋งํฑ ์ ์์ ์ด์ด ๋ น์๋ค..
๋ค๋น์ฐ.. ๊ทธ๋ฆฌ์ธ๊ฑฐ์ผ~..
๊ฑฐ๊ธฐ์๋ ํญ์
#ํ์ดํ ํด์ผ์ง
๊ทธ๋ผ ์ด๋ง.,
๋ค์ ํ๊ณ ๋ก์
2์ฐจ ํ ํ๋ก์ ํธ์ ๋ํ ๊ธ๋ก ์ฐพ์์ค๋๋ก ํ๊ฒ ๋ค..