인프런 커뮤니티 질문&답변
51. (6.11) 회원가입시 프로필 정보 자동 생성하기
해결된 질문
작성
·
38
0
안녕하세요!
useProfileData 훅에서 프로필 데이터를 조회하는 로직이 궁금해서 질문드립니다.
useProfileData에서 PGRST116 에러 코드를 확인해서 프로필을 생성하는 로직이 있는데요,
fetchProfile에서 .single() 대신 .maybeSingle()을 사용하고,
null이면 createProfile을 호출하는 방식이 더 직관적인 것 같은데
에러 코드를 확인하는 방식으로 구현하신 특별한 이유가 있을까요?
실무에서는 어떤 방식을 선호하시는지도 궁금합니다!
답변 2
1
안녕하세요 호기쿤님 이정환입니다.
우선 말씀하신대로 maybeSingle 메서드를 활용하시는 방법도 좋은 것 같습니다. 보다 직관적으로 느껴지는 부분도 확실히 있는것 같아요
강의에서 에러 코드(PGRST116)를 확인하는 구조로 구현한 이유는, 단순히 프로필 생성 여부만 구분하려는 목적뿐 아니라 학습 과정에서 PostgREST의 응답 형태와 에러 코드를 이해하는 경험을 제공하고 싶었기 때문입니다.
Supabase는 내부적으로 PostgREST를 기반으로 동작하는데, select 결과가 없을 때 116번 에러를 내려주는 구조를 알면 이후에 더 복잡한 API 응답을 다룰 때 도움이 됩니다. 그래서 실무에서 종종 쓰이는 방식 중 하나인 “에러 코드 기반 분기 처리”도 함께 보여드리고 싶었습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 호기쿤님.
질문 주신 상황은 supabase와 같은 백엔드 서비스에서 프로필 데이터를 조회할 때 발생할 수 있는 일반적인 패턴을 다루고 있는 것 같습니다. 여기서 흔히 사용되는 방식 두 가지를 비교하고 어떤 점이 실무에서 더 선호되는지 살펴보겠습니다.
두 가지 접근 방식:
- 에러 코드 확인:
PGRST116과 같은 특정 에러 코드를 확인하여 프로필이 없는 경우라는 것을 판단하고, 그에 따라 새 프로필을 생성하는 방식입니다. 이 방식은 특정 에러 코드에 기반해 명확하게 처리할 수 있어 오류 발생 시 빠르게 원인을 파악하기 쉽습니다.
maybeSingle()사용:.maybeSingle()메소드를 사용하여 프로필이 존재하지 않는 경우null을 반환받고, 이 경우에 새로운 프로필을 생성하는 방식입니다. 이 방법은 성공적인 결과인지, 데이터가 없는 경우인지 쉽게 구분할 수 있어 보다 직관적입니다.
실무에서의 선호:
에러 코드 확인: 이 방법은 데이터를 가져오려는 시도에 대해 명확한 오류 처리를 수행할 수 있어, 오류에 대한 디버깅이 용이합니다. 다만, 구체적인 에러 코드에 의존하는 것은 유지보수 측면에서 다소 번거로울 수 있습니다.
maybeSingle()사용: 일반적으로 더욱 직관적이기 때문에 실무에서도 많이 사용됩니다. 특히 데이터의 존재 여부와 관련된 논리에 적합하며, 에러와 정상(non-error) 결과를 구분하는 데 유리합니다.
관련된 논의와 더 많은 정보를 원하신다면, 다음의 유사한 질문들이 도움이 될 수 있습니다:
이 두 가지 방식 모두 프로젝트와 구현 목적에 맞게 선택하면 됩니다. 실무에서는 팀 내 코딩 스타일 가이드나 프로젝트 특성에 따라 의사결정을 하는 경우가 많습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




