본문 바로가기

verdantjuly/Today I Learned

TIL 20230810

728x90

이번 주 목표

프로젝트 완성

오늘 목표

백엔드 완성

프론트엔드 시작

오늘 한 것

백엔드 완성

프론트엔드 시작

1. Op.gt  Op.lt

문제

중간에 column이 삭제되는 경우 순서가 +1씩 증가할 수 없다.

기존의 식이다.

async moveColumnUp(columnId) {
    const t = await sequelize.transaction();
    try {
      const currentColumn = await Columns.findByPk(columnId, {
        transaction: t,
      });
      const currentOrder = currentColumn.columnOrder;
      const columnOrder = currentOrder + 1;
      const targetColumn = await Columns.findOne(
        {
          where: { columnOrder },
        },
        { transaction: t },
      );
      const targetId = targetColumn.columnId;

      await Columns.update(
        { columnOrder: columnOrder },
        { where: { columnId } },
        { transaction: t },
      );
      await Columns.update(
        { columnOrder: currentOrder },
        { where: { columnId: targetId } },
        { transaction: t },
      );

      await t.commit();
      return 1;
    } catch (err) {
      console.log(err);
      await t.rollback();
      return 0;
    }
  }

시도

Op.gt를 이용하여 증가 시키려는 column 보다 columnOrder가 많은 것들을 추리고

그 안에서 columnOrder 순으로 정렬하여

limit 1을 통해 내 바로 위 순서의 column을 뽑아낸다.

 

async moveColumnUp(columnId) {
    const t = await sequelize.transaction();
    try {
      const currentColumn = await Columns.findByPk(columnId, {
        transaction: t,
      });
      const currentOrder = currentColumn.columnOrder;

      const targetColumn = await Columns.findAll(
        {
          where: {
            columnOrder: { [Op.gt]: currentOrder },
          },
          order: [['columnOrder']],
          limit: 1,
        },
        { transaction: t },
      );
      const targetOrder = targetColumn[0].columnOrder;
      const targetId = targetColumn[0].columnId;

      await Columns.update(
        { columnOrder: targetOrder },
        { where: { columnId } },
        { transaction: t },
      );
      await Columns.update(
        { columnOrder: currentOrder },
        { where: { columnId: targetId } },
        { transaction: t },
      );

      await t.commit();
      return 1;
    } catch (err) {
      console.log(err);
      await t.rollback();
      return 0;
    }
  }

 

해결

잘 해결 되었다. 

알게된 것

Op.gt : 대상보다 초과하는 것들의 집합

Op.lt : 대상 미만의 집합

Op.gt 등 Op 옵션을 줄 때는 사용하려는 컬럼을 지정해 주어야 한다.

위의 에러가 발생한 코드

 


정리 

Op.gt : 대상보다 초과하는 것들의 집합

Op.lt : 대상 미만의 집합

Op.gt 등 Op 옵션을 줄 때는 사용하려는 컬럼을 지정해 주어야 한다.

 

체크리스트

[ O ] 예쁜 말로 협업하였는가?

[ O ] 12시간 동안 몰입하였는가?

[ O ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?

[ O ] 친절한 개발자였는가?

[ O ] 오늘을 평가하였을 때 주니어 개발자가 될 수 있겠는가?

ETA를 지킬 수 있다면....

KPT

Keep

최선을 다해서 팀원을 돕고 함께 진행해 나가는 점

Problem

속도가 더딘 것

Try

조금 더 에러들과 친해져서 해결 방법을 빠르게 파악하기

소감

오늘부터 드디어 프론트를 한다. 신난다.

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20230813  (0) 2023.08.13
TIL 20230811  (0) 2023.08.11
TIL 20230809  (0) 2023.08.09
TIL 20230808  (0) 2023.08.08
TIL 20230807  (0) 2023.08.07