서울 신규 가게 조회 (서울신상) - 제과영업점 데이터 insert 완료
일주일간 여러 일정으로 인해 프로젝트 진행이 다소 더뎠습니다. 다양한 이슈도 발생했었습니다. 그 속에서 현재까지 진행한 사항에 대해 기록하였습니다.
1인 프로젝트로 변경
가장 큰 이슈는 둘이서 작업하려던 프로젝트를 혼자서 하게된 점입니다. 원래 같이하려던 팀원이 개인사정으로 빠지게 되면서 혼자서 프로젝트를 진행하게 되었습니다. 처음에는 프로젝트 자체를 중단하려다가 원래 기획한 내용을 끝까지 활용하고자 계속 진행하게 되었습니다. 작업시간은 두배로 늘어나겠지만 기획한 내용대로 마무리하기 위해 도전해보려 합니다.
ERD 구성
서울시 데이터를 api로만 받기에는 업종당 10,000건이 넘어가기 때문에 (일일 api 호출 회수 이슈도 있고) 데이터베이스에 가게 정보를 저장하여 조회하는 방식을 채택했습니다. DB는 postgreSQL을 사용하였고, 먼저 제과영업업 api 정보를 조회하고 DB에 저장하는 로직까지 작성하였습니다.
▼ 제과영업업 api ▼
DB insert 완료
위 ERD처럼 우선 테이블 구성하였고, 아래 건수 (list_total_count:14329) 그대로 DB에 저장되는 것을 확인할 수 있었습니다.
저장하면서 겪은 SequelizeDatabaseError
seoul_data 테이블에 저장하면서 SequelizeDatabaseError 에러를 만났는데 원인은 double precision 타입의 컬럼에 대해 유효하지 않은 값("", 즉 빈 문자열)을 삽입하려고 시도했기 때문이었습니다. 문제가 발생한 컬럼은 x와 y로 추정되었고, 이들 컬럼인 x,y를 아래처럼 수정하고 오류를 해결할 수 있었습니다.
// 숫자형 필드의 값을 검증하고 변환하는 함수
function toFloatOrNull(value) {
const num = parseFloat(value);
return isNaN(num) ? null : num;
}
const saveOrUpdateData = async (data) => {
for (const item of data) {
await SeoulData.upsert({
// 기존 매핑된 컬럼들...
apvpermynd: item.APVPERMYMD ? new Date(item.APVPERMYMD).toISOString() : null,
// ...
updatedt: item.UPDATEDT ? new Date(item.UPDATEDT).toISOString() : null,
uptaenm: item.UPTAENM,
x: toFloatOrNull(item.X),
y: toFloatOrNull(item.Y),
sntuptaenm: item.SNTUPTAENM,
// 나머지 필드들도 필요에 따라 이와 같은 방식으로 추가합니다.
}, {
fields: ['opnsfteamcode', 'mgtno', 'apvpermynd', 'trdstategbn', 'trdstatenm', 'dtlstategbn', 'dtlstatenm', 'dcbymd', 'sitetel', 'sitepostno', 'sitewhladdr', 'rdnwhladdr', 'rdnpostno', 'bplcnm', 'lastmodts', 'updategbn', 'updatedt', 'uptaenm', 'x', 'y', 'sntuptaenm'],
returning: false,
});
}
};
끝으로
테이블 만들고 저장하기 까지 부트캠프 하면서 여러번 진행했지만 다른 DB를 사용하여 하는 과정에서 기존에 접하지 못한 에러들을 만났습니다. 주요 원인은 nodeJs 에서 postgreSQL insert 하면서 발생한 문법적인 오류였고, 이를 수정한 후 정상 동작하는 것을 확인할 수 있었습니다.
api의 정보를 db에 저장한 과정을 확인하였으니 이제, 여러 업종에 대한 데이터를 일정 주기동안 체크(insert,upte)하는 로직을 테스트 할 수 있게 되었습니다. 이 테스트까지 마치고나서 프런트 작업과 함께 db에 저장된 서울시 신규 가게데이터를 불러오는 과정을 동시에 테스트해볼 예정입니다.
▼ 이전 작업한 다른 프로젝트들 ▼
'사이드 프로젝트 > 서울 신상 빵집' 카테고리의 다른 글
서울 신상 빵집 소개 개요, 주요 기능, 어려웠던 점 (1) | 2024.06.01 |
---|---|
서울 신규 가게 조회 사이트 기획 완료 (1) | 2024.04.04 |