설명하기 앞서 _외부 회사의 명칭을 willow(가명)_라고 말하도록 하겠음
- willow 회사와 협업하여
willow-api
를 사용. willow-db
를 공유해서 우리 서비스에서 데이터가 바뀌면 willow의 db가 변경되는 api를 작성해야하는 상황.- willow를 사용하는지 안하는지에 대한 구분을 통해서 willow db가 수정된다.
상황
- willow api 사용 기능을 추가 후 유저 추가, 수정, 삭제, 등의 기능에 willow db 데이터도 수정되게 코드 수정을 한다.
- 유저의 경우 만1세 이상이 아니면 willow 사용이 되지 않아서 만0세인 경우에는 강제로 willow db에 만, 년도를 -1을 만들어주기로 했다.
ex) 2024-01-01년생 → 2023-01-01년생으로 willowdb에만 저장
오류
willow 코드를 적용한 유저 삭제
부분에서 오류가 발생했다.
원인1 : willow 를 사용하지 않았을때 test 부족
수정전
USING_HC_YN 가 없는 상황에서는 오류가 발생한다. 그러니 옵셔널 체이닝을 사용해서 작성해주면 좋다.
if (willowData.USING_YN === "Y") {
수정 후
옵셔널 체이닝을 사용하면 없는경우에도 비교가 가능해서 오류를 방지할 수 있다.
if (willowData?.USING_YN === "Y") {
해결
/*****************************************************
* willow DB 정보 업데이트
*****************************************************/
const willowCheckInfo = {
country_code,
id,
};
// willow사용 확인
const willowData = await services.willowCheck(
willowCheckInfo
);
// willow db정보 업데이트
if (willowData?.USING_YN === "Y") {
try {
await willow.updateInfo(willowData);
} catch (error) {
try {
// willow 오류 기록
await models.insertLog(
id_num,
req.body,
error,
req.originalUrl,
"UPDATE"
);
} catch {
// 오류 LOG 저장시에 발생하는 오류는 무시
}
}
}
원인2: 생년월일이 없을때의 예외처리 부족
생년월일은 입력하지 않은 경우에 오류가 발생항 예외처리가 없었음
수정 전
생년월일에 대한 내용을 if 밖에서 작성해서 willow를 사용하지 않는 경우 검증을 안해봐서 오류가 발생함
if (USING_YN === "Y") {
willowData = await models.readStudentInfo(params, Id);
}
// ★ 생년월일 검증 및 수정 코드 if 밖에 있음
willowData.birthday = util.birthdayCheckForWillow(willowData.birthday);
수정 후
// willow 저장하기 위한 학생정보 조회
if (USING_YN === "Y") {
willowData = await models.readStudentInfo(params, Id);
// ★willow를 사용하는 if문 안에서 birth를 검증하는 코드 추가
if (willowData?.birthday) {
willowData.birthday = util.birthdayCheckForWillow(willowData.birthday);
}
}
코드 작성시 가독성 항상 생각하기
내가 작성코드
willowStudentCheck: async (params, Id) => {
let willowData = {};
// willow 사용 YN (USING_YN)
const { USING_YN } = await models.readWillow(params);
// willow 저장하기 위한 유저정보 조회
if (USING_YN === "Y") {
willowData = await models.readInfo(params, Id);
if (willowData?.birthday) {
// 만0세 라면 만1세로 변경
willowData.birthday = util.birthdayCheck(willowData.birthday);
}
}
willowData.USING_YN = USING_YN;
return willowData;
},
팀장님 가독성 개선 코드
willowStudentCheck: async (params, Id) => {
// 도장 willow 기기 사용 YN (USING_HC_YN)
const { USING_YN } = await dojangModels.readDojangWillow(params);
// willow o
if (USING_YN === "Y") {
const willowData = await models.readInfo(params, Id);
if (willowData?.birthday) {
// 만0세 라면 만1세로 변경
willowData.birthday = util.birthdayCheck(willowData.birthday);
}
return { USING_YN, ...willow };
}
// willow x
else {
return { USING_YN };
}
},
'Etc' 카테고리의 다른 글
NAS 연결 하기 (0) | 2025.04.04 |
---|---|
구글 OAuth 사용방법2 - 클라이언트 ID와 Password 만들기 (0) | 2024.12.23 |
구글 OAuth 사용방법1 - 준비단계 (0) | 2024.12.23 |
라이브러리 충돌.... (0) | 2024.12.21 |