반응형
이력서 업데이트
patch를 사용하여 이력서 항목을 업데이트 하는 로직을 구현했는데, 테스트 중 문제를 하나 알게 되었다...
const updatedResume = await prisma.resumes.update({
where: { resumeId: +resumeId },
data: {
title:title,
contents:contents,
statusCode:statusCode,
},
});
사실 이렇게 기존 코드로 업데이트를 진행해도 무방하나 데이터를 보내지 않을 경우 해당 데이터도 공란으로 엎어쳐지는 문제가 있었다. 사실 업데이트 때보다 신규 등록시에 더 문제가 되는 부분이었다.
statusCode라는 컬럼의 기본값이 "APPLY"인데, 이력서 등록 시 다른 값이 들어갈 가능성을 고려해서(관리자용 옵션) 등록하는 라우터에 해당 항목을 받아와 넣어주는 로직을 구현했었다. 그런데 아무 값도 보내지 않으면 공란으로 저장되고 기본값 적용이 안 되길래 부득이하게 statusCode는 등록 라우터에서 제외했었는데...
const resume = await prisma.resumes.create({
data: {
userId,
title,
contents,
...(statusCode && { statusCode }),
},
});
이런 식으로 수정하니까 해결되었다.
- statusCode 값이 존재하면 (statusCode가 undefined, null 또는 빈 문자열이 아니면), { statusCode } 객체를 생성한다.
- 객체 확장 표현식(...)을 사용하여 이 객체를 data 객체에 병합함!
- 결과적으로 statusCode가 존재하면 data 객체에 statusCode 속성이 포함된다.
구조분해할당과 전개연산자를 이런 식으로 활용할 수 있구나...
반응형
'TIL' 카테고리의 다른 글
Redis에 대해서 (1) | 2024.02.29 |
---|---|
의존성 주입에 대하여 (0) | 2024.02.27 |
JavaScript의 변수 선언과 구조 분해 할당(destructuring assignment) (0) | 2024.02.21 |
액세스 토큰과 리프레시 토큰으로 자동 로그인 구현하기 (0) | 2024.02.21 |
3계층 아키텍처에서 에러나 로직을 반영하는 기준 (1) | 2024.02.21 |