DevLog

[โœ๏ธ Project Dev Log] 2022-01-11 ๋ณธ๋ฌธ

๐Ÿ“ Project - Dev Log

[โœ๏ธ Project Dev Log] 2022-01-11

Seungjae Lee 2022. 1. 11. 23:18

์˜ค๋Š˜์€ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ–ˆ๋‚˜์š”?

  • sequelize ๊ด€๊ณ„์„ค์ •
  • admin: ์ผ์ • ์‹ ๊ณ  ์ด์ƒ์ธ ๋ผ์šด์ง€์˜ ์ฃผ์†Œ, ๋ผ์šด์ง€ id, ์‹ ๊ณ  ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” api ๊ตฌํ˜„

์˜ค๋Š˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ํž˜๋“  ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

- sequelize ๊ด€๊ณ„ ์„ค์ • ๋ฐ ๊ทธ๋ฃนํ™”, findAndCountAll ์‚ฌ์šฉ

์–ด์ œ ๊นจ๋‹ซ๊ฒŒ๋œ ๊ด€๊ณ„์„ค์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ sequelize๊ณต์‹ ๋ฌธ์„œ์—์„œ Associations ํŒŒํŠธ ๋ถ€๋ถ„์„ ์ฝ์–ด๋ดค๋‹ค.

ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๊ด€๊ณ„๋Š” ์ผ๋Œ€๋‹ค 1:N ๊ด€๊ณ„๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋ผ ์ด ๋ถ€๋ถ„์„ ์ค‘์‹ฌ์œผ๋กœ ๊ด€๊ณ„์„ค์ •์„ ํ•ด์•ผํ–ˆ๋‹ค.

Team.hasMany(Player);
Player.belongsTo(Team);

์˜ˆ์ œ์ฝ”๋“œ๊ฐ€ ์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ ์ผ๋Œ€๋‹ค์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ ค๋ฉด ์—ฐ๊ด€๋œ ๋‘ ๊ฐœ์˜ ๋ชจ๋ธ์„ hasMany์™€ belongsTo๋ฅผ ์„ธํŠธ๋กœ ๋ฌถ์–ด์„œ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

ํ•ด์„ํ•˜์ž๋ฉด ํ•œ๊ฐœ์˜ Team์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ Player๋ฅผ ํฌํ•จํ•˜๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜ Player๋Š” ํ•œ๊ฐœ์˜ Team์— ํฌํ•จ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

(Team์€ 1 Player๋Š” N => 1:N์˜ ๊ด€๊ณ„)

๋ณธ์ธ์ด ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ user๋ชจ๋ธ๊ณผ comment ๋ชจ๋ธ์ด ์ด ๊ด€๊ณ„๋ฅผ ๋„๊ณ  ์žˆ๋Š”๋ฐ,
ํ•œ๋ช…์˜ ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด ๊ด€๊ณ„๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์คฌ๋‹ค.

    static associate(models) {
      user.hasMany(models.comment)
    }

    static associate(models) {
      comment.belongsTo(models.user)
    }

๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด์ค€๋’ค ์„ค์ •๋œ ๋ชจ๋ธ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค.

const data = await report.findAndCountAll({
  group: ["loungeId"],
  include: {
    model: lounge,
    require: true,
  },
});

์กฐํšŒ์™€ ๋™์‹œ์— ๊ฐœ์ˆ˜๋„ ํ•„์š”ํ•ด์„œ findAndCountAll์„ ์‚ฌ์šฉํ•ด์„œ ์ฟผ๋ฆฌํ–ˆ๋Š”๋ฐ ์‚ฌ์šฉํ•œ ์˜ต์…˜๊ฐ’์„ ์„ค๋ช…ํ•˜๋ฉด

  • group: row์ฟผ๋ฆฌ์—์„œ group by์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค(์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ๋Š” loungeId๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™” ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค).
  • include: ํ˜„์žฌ์˜ ๋ชจ๋ธ๊ณผ ์—ฐ๊ด€๋œ ์˜ต์…˜์— ๊ธฐ์žฌ๋œ ๋ชจ๋ธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
    • require: true๋กœ ์„ค์ •ํ•˜๋ฉด joinํ•  ๋•Œ outer join ๋Œ€์‹ ์— inner join์œผ๋กœ ํ•œ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฟผ๋ฆฌํ•˜๋ฉด ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋ธ์˜ data ์ •๋ณด์™€ ๊ทธ ์•„๋ž˜ ์ถ”๊ฐ€๋กœ ์˜ต์…˜ include์— ๊ธฐ์žฌ๋œ ๋ชจ๋ธ์˜ ์ •๋ณด๋„

lounge: [lounge]์ด์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž˜ ์กฐํšŒ๋œ๋‹ค

๋‚ด์ผ์€ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋‚˜์š”?

  • ๊ด€๋ฆฌ์ž๊ฐ€ ์‹ ๊ณ ๋œ ์ •๋ณด๋ฅผ ํ™•์ธ ํ›„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ api ๊ตฌํ˜„
  • ์„ค์ •๋œ model assosiate๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง

'๐Ÿ“ Project - Dev Log' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[โœ๏ธ Project Dev Log] 2022-01-14  (0) 2022.01.13
[โœ๏ธ Project Dev Log] 2022-01-12  (0) 2022.01.12
[โœ๏ธ Project Dev Log] 2022-01-10  (0) 2022.01.10
[โœ๏ธ Project Dev Log] 2022-01-08  (0) 2022.01.08
[โœ๏ธ Project Dev Log] 2022-01-07  (0) 2022.01.08
Comments