7/7 TIL mysql 값을 배열로 저장하기

이승준·2023년 7월 7일
0

⚠️sequelize를 이용해 mysql 컬럼의 값을 배열로 저장하기

1. 생각하게 된 이유

-> likes 컬럼에다가 게시물Id를 배열 형태로
저장하여 좋아요한 게시물을 관리하기 위함

2. 방법

  • Datatypes를 JSON으로 지정하기 ( 문법이 어렵고 이해가 안되서 pass)
  • getter, setter 이용하기...(이건 더..)
  • 문자열로 저장한 후 꺼내올 때 JSON.parse를 이용해 배열형식으로 조작하기

3. 완성된 코드

...

const likePosts = user.likePosts; // 문자열 형태의 likePosts 가져옴
const likePostsArr = likePosts ? JSON.parse(likePosts) : []; 
// likePostsArr이 존재하면 배열형태로 저장 아무것도 없으면 빈배열로 저장
const isExist = likePostsArr.filter((likePost) => likePost == postId);
// 배열안에 postId가 존재하는 지 확인
  if (!isExist.length) { // 없으면
    likePostsArr.push(Number(postId));
      // 숫자형태의 postId를 배열에 넣어서 추가해줌
    const likePostsArrToStr = JSON.stringify(likePostsArr); // 배열 문자열화

    await Posts.update({ likes: likes + 1 }, { where: { postId } });
    await Users.update(
        { likePosts: likePostsArrToStr },
        { where: { userId } }
      );
      return res.status(200).json({ message: "좋아요가 추가 되었습니다" });
...

유지보수의 측면은 전혀 고려하지 않은 듯한..
월요일에 튜터님께 여쭤보고 리팩토링 해야겠다.

0개의 댓글