inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

해시태그 검색하기

9.5.1 스스로 해보기 관련

415

옥윤성

작성한 질문수 9

0

안녕하세요

9.5.1 스스로 해보기에 추가 학습으로

좋아요/좋아요 취소 버튼을 만들었습니다.

이제

각 게시물에 좋아요 누른 사람의 목록을 input 창에 나열시키고 싶습니다.

전제조건 : 로그인과 관계없이 누구나 그 목록을 볼 수 있습니다.

 

  1. models/post.js

 db.Post.belongsToMany(db.User, { as: "User2", through: "Like" });
  1. models/user.js

db.User.belongsToMany(db.Post, { as: "Post2", through: "Like" });
  }
  1. routes/page.js

router.get("/", async (req, res, next) => {
  try {
    const posts = await Post.findAll({
      include: [
        {
          model: User,
          attributes: ["id", "nick"],
        },
        {         
          model: User,
          attributes: ["nick"],
          as: "User2",
        },
      ],
      order: [["createdAt", "DESC"]],
    });

    res.render("main", {
      title: "NodeBird",
      twits: posts,
     });
  } catch (err) {
    console.error(err);
    next(err);
  }
});

추가한 코드는 아래와 같습니다.

{          
          model: User,
          attributes: ["nick"],
          as: "User2",
        },
  1. views/main.html

    {% for twit in twits %}
      <div class="twit">
      <input type="hidden" value="{{twit.User.id}}" class="twit-user-id" />
      <input type="hidden" value="{{twit.id}}" class="twit-id" />
      <div class="twit-author">{{twit.User.nick}}</div>

      {% if not followingIdList.includes(twit.User.id) and twit.User.id
      !==user.id %}
      <button class="twit-follow">팔로우하기</button>
      {% endif %}
      <!-- '수정', '삭제' 버튼 -->
      {% if user.id === twit.User.id %}
      <button class="twit-delete">삭제</button>
      <button class="twit-update">수정</button>
      {% endif %}
      <!-- 게시글, 이미지 -->
      <br />
      <br />
      <div class="twit-content">{{twit.content}}</div>
      {% if twit.img %}
      <br />
      <div class="twit-img"><img src="{{twit.img}}" alt="섬네일" /></div>
      {% endif %}
      <br />
      {% if not likeIdList.includes(twit.id) %}
      <!-- 좋아요 안 누른 상태 -->
      <button class="twit-like" style="cursor: pointer">
        <img src="../notlike.png" class="twit-notlike-icon" />
      </button>
      {% else %}
      <!-- 좋아요 이미 누른 상태 (취소하고 싶다면) -->
      <button class="twit-notlike" style="cursor: pointer">
        <img src="../like.png" class="twit-like-icon" />
      </button>
      {% endif %}
      <!-- 좋아요를 누른 사람들 목록 -->
      <input type="text" value="{{twit.User2.nick}}" />
    </div>
    {% endfor %}

추가한 코드는 아래와 같습니다

      <input type="text" value="{{twit.User2.nick}}" />

 

[결과]

어디부터 잘못된 걸까요..?

 

nodejs mysql mongodb Sequelize

답변 1

0

제로초(조현영)

일단 console.log(posts) 해보세요. 좋아요 누른 사람은 여러명일 수 있으므로 user2는 배열일 겁니다. 그렇다면 넌적스에서도 for문을 사용하셔야 하고요.

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

931

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

387

1

리뉴얼 강의 및 공부 방법

0

590

1

jwt decode

0

1138

1

node.js 교과서 3판 질문드립니다

0

397

1

passport와 jwt

0

439

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

490

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

520

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3545

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

430

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

293

1

Strategy의 done에 대해 질문드립니다.

0

374

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

511

2

res.setHeader vs res.cookie

0

1799

3