[프리온보딩] 다섯번째 과제 회고

이동훈·2021년 11월 15일
0

프리온보딩

목록 보기
6/8

어느덧 프리온보딩 과정도 절반이 지나갔다. 다섯번째 과제는 이전보다 분량이 적은 편이라 다소 여유로웠다. 하지만 그럴수록 실수한 부분은 없는지 꼼꼼하게 체크해야하는 법이다.

이번 과제는 임상정보 openAPI에서 임상정보를 주기적으로 수집하고, 그에 대한 정보를 반환하는 api를 만드는 것이다. 수집한 데이터의 목록을 반환할 때, 최근 일주일 이내에 업데이트 된 임상정보 목록만 반환하는 것이 포인트였다.

임상정보가 업데이트 되었음을 인지하기 위한 방법을 생각해야 했고, 정보를 받아올 때 해당 정보를 hash화하여 hash값을 같이 저장하는 방법을 택하였다. 이 hash값이 변경되었다면 기존 정보가 업데이트 되었다는 뜻이므로, 업데이트 여부를 파악할 수 있다.

// openApiJobs.js
// 임상정보 오브젝트마다 해쉬값을 만들어서 넣어줌
      let trials = res.data.data;
      trials.map(trial => {
        let hash = md5(JSON.stringify(trial));
        trial.hash = hash;
        return trial;
      });

      await createOrUpdateTrials(trials);
// trialService.js
    if (alreadyTrial.hash !== trial.hash) {
        await models.trial.update(dbRawData, {
          where: {
            id: trial['과제번호'],
          },
        });
      }

배운 점

  • 이번에 batch task를 처음 접하게 되었다. node-cronaxios를 활용하여, openApi로 부터 주기적으로 데이터를 받아오는 작업을 진행했다. 잘 활용하여, 추후 나만의 자동화 시스템을 만드는 데에 활용해보겠다.
profile
I will find a way, I always have.

0개의 댓글