DevLog

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

๐Ÿ“ Project - Dev Log

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

Seungjae Lee 2022. 1. 12. 22:03

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

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

  • admin: ํ™•์ธํ•œ lounge report ์‚ญ์ œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • model assosiate ์ด์šฉํ•˜์—ฌ ํŠน์ • lounge๋ฅผ ๋ฆฌํŽ™ํ† ๋ง

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

- ์ฝ”๋“œ์—๋Š” ์ •๋‹ต์ด ์—†๋‹ค & ์—๋Ÿฌ์ฒ˜๋ฆฌ๋Š” ํ™•์‹คํ•˜๊ฒŒ

์–ด์ œ sequelize model๋“ค ๊ฐ„์˜ ๊ด€๊ณ„์„ค์ •์„ ํ•ด์ค€ ๋’ค, ๋ชจ๋ธ์„ ํ•œ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋‘ ๋ฒˆ์— ๊ฑธ์ณ ์ฟผ๋ฆฌ ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ์ƒˆ๋กญ๊ฒŒ ํ•œ ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ž‘์—…์„ ๋๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฆฌํŽ™ํ† ๋ง ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

lounge // ์—ฌ๊ธฐ์„œ ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ
  .findOne({
    where: { id: req.params.loungeId },
  })
  .then((data) => {
    const { image, address, avgRating } = data.dataValues;
    comment // ์—ฌ๊ธฐ์„œ ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ
      .findAll({
        where: { loungeId: req.params.loungeId },
        attributes: ["userId", "contents", "rating", "createdAt"],
      })
      .then((data) => {
        const newData = data.map((element) => element.dataValues);
        console.log(newData);
        return res.status(200).send({
          data: { image, address, avgRating, comments: newData },
        });
      });
  });

์ด ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ์˜€๋Š”๋ฐ lounge์—์„œ ํ•œ ๋ฒˆ ์ฟผ๋ฆฌํ•˜๊ณ  comment์—์„œ ๋˜ ํ•œ ๋ฒˆ ์ฟผ๋ฆฌํ•˜๋Š” ์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ ์ด ๋ถ€๋ถ„์„ include ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ž‘์„ฑํ•ด๋ดค๋‹ค

lounge
  .findOne({
    where: {
      id: req.params.loungeId,
    },
    include: {
      model: comment,
      require: true,
      where: {
        loungeId: req.params.loungeId,
      },
    },
  })
  .then((data) => {
    const { image, address, avgRating } = data.dataValues;
    const comments = data.dataValues.comments.map((element) => {
      return {
        userId: element.dataValues.userId,
        contents: element.dataValues.contents,
        rating: element.dataValues.rating,
        createdAt: element.dataValues.createdAt,
      };
    });
    console.log(comments);
    return res
      .status(200)
      .send({ data: { image, address, avgRating, comments } });
  });

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑ ํ–ˆ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€์ ์ด ์ฝ”๋“œ ๊ธธ์ด๋„ ๋Š˜์–ด๋‚˜๊ณ  ๋ณต์žกํ•ด์ง€๋Š” ๋А๋‚Œ์ด์—ˆ๋‹ค.
ํ™•์žฅ์„ฑ์ด ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์ดํ›„์— ๊ด€๊ณ„๊ฐ€ ๋” ๋ณต์žกํ•ด์งˆ ๋•Œ ์žฅ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์ง€๊ธˆ ํ”„๋กœ์ ํŠธ๋กœ ์ง„ํ–‰์ค‘์ธ ์ •๋„์˜ ๋ณต์žก๋„๋ฉด ๊ธฐ์กด์˜ ๋‘ ๋ฒˆ์— ๊ฑธ์ณ ์ฟผ๋ฆฌํ•˜๋Š” ์‹์˜ ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  ์—๋Ÿฌํ•ธ๋“ค๋ง ํ•˜๊ธฐ๋„ ์ข‹์€ ๊ฒƒ ๊ฐ™์•˜๋‹ค.
(๋‚ด๊ฐ€ ์ œ๋Œ€๋กœ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž˜ ํ•˜์ง€ ๋ชปํ•ด ์ด๋ ‡๊ฒŒ ๋А๋ผ๋Š” ๊ฑธ ์ˆ˜๋„ ์žˆ์Œ ...)

์ƒˆ๋กœ ๋ฆฌํŽ™ํ† ๋งํ•˜๋ฉด์„œ ๊ธฐ์กด์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋˜ ์˜ค๋ฅ˜๋“ค์ด ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ ํ•  ๋•Œ ์ƒ๊ฒจ์„œ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•˜๋Š” ๋ถ€๋ถ„๋“ค์ด ์ƒ๊ฒผ๋‹ค

TypeError: Cannot read properties of null (reading 'dataValues') <= ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค
์˜ค๋Š˜ ๋‘ ๋ฒˆ ์ด์ƒ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๊ฐ€ ์ด ๋ถ€๋ถ„์ธ๋ฐ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š”,
ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ null๊ฐ’์ผ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ„๊ณผํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ์„œ ์ƒ๊ธด ๋ฌธ์ œ์˜€๋‹ค.
์ด ๋ถ€๋ถ„์€ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘๊ณ  ์ง„ํ–‰ํ•ด์•ผ๊ฒ ๋‹ค.

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

  • ์—๋Ÿฌ์ฒ˜๋ฆฌ ๋๋‚ด๊ณ  null๊ฐ’์ธ ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
  • aws ๋ฐฐํฌ ์—ฐ์Šต

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

[โœ๏ธ Project Dev Log] 2022-01-14  (0) 2022.01.13
[โœ๏ธ Project Dev Log] 2022-01-11  (0) 2022.01.11
[โœ๏ธ 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