Study_Develop/ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ ๋ถ€ํŠธ์บ ํ”„

ํฌ์Šค์ฝ” X ์ฝ”๋”ฉ์˜จ 7๊ธฐ 6์ฃผ์ฐจ ch2. Sequelize

hiijihyun 2023. 6. 8. 23:48
๋ฐ˜์‘ํ˜•

ํฌ์Šค์ฝ” 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์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ธ€๋กœ ์ฐพ์•„์˜ค๋„๋ก ํ•˜๊ฒ ๋‹ค..