카테고리 -> 태그 분류 기능 구현

JOO·2021년 12월 27일
0

실전프로젝트

목록 보기
4/12

카테고리 -> 태그 분류 기능 구현

프로젝트 API중에 카테고리 별로 분류하거나, 카테고리 + 태그 별로 분류하는 기능이 있었다. 아래는 구현한 코드이다.

const getTrackIdsByTag = async ({ tag, category }) => {
  const findedTracks = await TrackTag.findAll({
    attributes: ["trackId"],
    where: {
      tag: {
        [Op.or]: [tag[0], tag[1], tag[2]],
      },
      category: category,
    },
  });
  let tags = [];
  for (let i = 0; i < findedTracks.length; i++) {
    tags.push(findedTracks[i].trackId);
  }
  const set = new Set(tags);
  const result = [...set];
  return result;
};

[Op.or] 기능으로 조건들 중 하나라도 만족하면 찾아내게 했지만, 이렇게 하게되면 중복된 데이터가 찾아지는 경우가 있었다.

subquery를 사용해서 데이터 중복없이 바로 구해지게끔 구현하는게 제일 좋을 것 같지만 일단 배포를 위해 Set 을 통해 배열 안에 중복된 데이터를 제거해주고 다시 배열로 만들어 줬다.

profile
개발공부 기록

0개의 댓글