TIL/내일배움캠프 10주차

[내배캠 TIL ] 10주차 목요일 :: Team Project

두캔두잇 2023. 7. 21. 22:37

맡은 기능을 구현을 하고 다른부분을 할 것이 있는지 물어봤는데 새로 해야 할 것이 생겼다. 그것은 바로 

admin계정 즉 관리자가 가게 등록을 하였을때 model 쪽에 추가를 했던 컬럼이 있다.

role: {
        defaultValue: 0,
        type: DataTypes.INTEGER,
      },

이 role 이라는 컬럼인데 초기 값은 defaultValue : 0 으로 설정이 되어 있는데 

관리자가 가게 등록을 하였을때 defaultValue의 값이 1로 바뀔수 있게 하는 것이였는데 , 처음에는 팀원분들의 요구사항을 이해하지 못하였지만 다시 한번묻고 또 묻고해서 내가 생각한대로 기능을 구현하였는데 결과적으로 잘된 것 같다고 하셨다. 우선 어떻게 진행을 하였냐면 가게를 등록하는 과정에서 defaultValue의 값이 증가해야하니깐 , storerouter.js 파일에 가서 가게등록을 하는 API에서 코드를 몇가지 추가하였다.

 

 첫번째 ,

const getMaxRole = async () => {
      const maxRoleUser = await Users.findOne({ order: [['role', 'DESC']] });
      return maxRoleUser.role;
    };

getMaxRole 이라는 변수에 비동기적으로 처리한뒤 아래 maxRoleUser변수를 또 만들어 findOne을 통해 찾기로 하였다. 그리고 정렬을 하는데 role 의 칼럼들을 정리하고 DESC를 통해 내림차순으로 하려고 했는데 지금 생각해보니 어차피 

defaultValue는 1이 될것이기에 내림차순이 필요한가? 싶다. 그래서 삭제를 할 예정이다. 

두번째,

let maxRole = await getMaxRole();

위처럼 변수들을 만들고 getMaxRole에 담긴 데이터들을  maxRole 이라는 변수를 let을 통해 만들고 담았다.

그리고 create를 통해 DB에 데이터를 생성을 하는데 ,

userId,
      storeName,
      storeAddress,
      storeUrl,
      //maxRole 변수에 ++를 통해 0 -> 1로 증가시킴
      role: maxRole++,

이렇게 role이라는 칼럼에 위에 maxRole 변수에 담긴 데이터들을 가게등록을 할때 role 이 1이 될 수 있도록 ++를 통해 만들었다. 여기서 DB에 들어갈 것들을 storeName,storeAddress,storeUrl 이렇게 만들었는데 이것들은 사실 Stores의 모델에 있는것이다. 근데 role 이라는 컬럼은 Users에 있는 컬럼인데 이것을 왜 쓸수 있냐면 제약조건을 걸지 않았기 때문에 써도 무방하다는 것이다. 그래서 이렇게 조회를 할때 조회하는 부분에서 JOIN 즉 , include를 통해 조회할 목록들을 추가하였다.

// JOIN : 조회를 할대 Users의 role 컬럼 추가
      include: [
        {
          model: Users,
          attributes: ['role'],
        },
      ],

이로써 팀원분들께서 추가로 요구하신 사항을 마무리 하였다.