230913(수)_라우팅 동적경로, 게시글 좋아요 Javascript

박지은·2023년 9월 13일
0

TIL

목록 보기
23/36

동적 경로 || 정적 경로

라우터 경로를 설정할 때, 순서가 영향을 미친다.
보통 정적 경로 > 동적 경로 순으로 동적경로가 가장 마지막 부분에 위치하는 것이 좋다.

Likes router를 설정할 때, 그래서 맨 앞 부분에 와있는 이유

만약에 router.use('/posts', [Posts, Comments, Likes]); 로
순서를 바꾸면 인식이 안되는 경우가 있는데,
Likes의 엔드포인트 '/like'를 앞에 Posts의 엔드포인드 '/:postId'에서 '/like'를 동적 매개변수로 인식하기도 해서 오류가 발생할 수 있다.

그러니 꼭 순서지키기 ⭐️

동적 경로 ex. /:postId/like
( 여기서 ':postId'와 같은 동적 매개변수를 사용할 수 있다.)

정적 경로 ex. /like

//routes/index.js
import express from 'express'; 
import Likes from './likes.js';
import Users from './users.js';
import Posts from './posts.js';
import Comments from './comments.js';
import Login from './login.js';

const router = express.Router();

router.use('/', [Users, Login]);
router.use('/posts', [Likes, Posts, Comments]);

export default router;

Javascript 게시글 좋아요 개수를 가져오는 방법

게시글 좋아요 조회 API 에서
게시글 좋아요 개수를 가져오도록 추가했다.

Prisma에서는 특정 필드의 개수를 _count를 이용해서 조회할 수 있는데,
방식은 아래와 같다.

일반적으로 _count를 사용한 방법은 데이터베이스의 성능과 쿼리 최적화 측면에서 효율적이다.

더 자세한 방식은
prisma.io 공식문서

설명 부분만 추가
'정렬' 중에서
관계 집계 값을 기준으로 정렬
예를 들어 다음 쿼리는 관련 게시물 수를 기준으로 사용자를 정렬합니다.

Posts

const getActiveUsers = await prisma.user.findMany({
  take: 10,
  orderBy: {
    posts: {
      _count: 'desc',
    },
  },
})

아래는 내가 작성한 코드

const posts = await prisma.posts.findMany({
      //Likes 테이블에서 로그인한 유저가 좋아요를 누른 게시글을 찾습니다.
      where: {
        Likes: {
          some: {
            UserId: Number(userId),
          },
        },
      },
      select: {
        postId: true,
        UserId: true,
        title: true,
        createdAt: true,
        updatedAt: true,
        User: {
          select: {
            nickname: true,
          },
        },
        // Prisma에서는 특정 필드의 개수를 조회할 수 있습니다.
        _count: {
          select: {
            Likes: true,
          },
        },
      },
      orderBy: [
        {
          // 관계 집계 값을 기준으로 정렬. 좋아요 개수가 많은 순으로 정렬
          Likes: {
            _count: 'desc',
          },
        },
        // 좋아요 개수가 동일할 경우 최신순으로 정렬
        {
          createdAt: 'desc',
        },
      ],
    });
profile
성장하는뿅아리

0개의 댓글

관련 채용 정보