행복을 담는 블로그
[트러블 슈팅🔥] invalid input syntax for type uuid : "null" (with supabase) 본문
TIL
[트러블 슈팅🔥] invalid input syntax for type uuid : "null" (with supabase)
hyun0zin 2024. 4. 7. 19:49Trouble Shooting🔥
loginUserId를 받아오는 시점과 사용 시점의 문제
useQuery로 getUserInfo 함수를 통해 userInfo를 호출하는 시점과 EditProfile에서 userId를 호출하는 시점이 모두 비동기처리로 일단 호출부터 헤 -> 이후 값을 이용하자. 이렇게 흘러갔기 때문에 loginUserInfo에 설정된 초기값인 null
이 먼저 사용되어 일어난 문제점이었다.
원인 파악 :
- 기존 getUserInfo 함수를 호출할 때 userId를 사용하여 유저 정보를 가져오고 있다.
- 그러나 userId 값은 useLoginStore의 loginUserId를 통해 가져오는데, 이 값의 초기값은 null로 설정되어 있다.
- 따라서 처음 getUserInfo 함수는 초기값 null을 사용하여 API 호출 과정에서 문제가 생겼다.
→ supabase에서는 null 값으로 user_id와 비교하고 있었기에 생기는 문제.
🔥 따라서 getUserInfo 함수가 호출되는 시점이 값이 설정되는 시점보다 빠르기 때문에 발생한 문제이다.
// User(선생님/수강생) 정보 불러오기
export const getUserInfo = async ({ userId }: { userId: string }) => {
const { data: userInfo, error }: PostgrestMaybeSingleResponse<UserInfoType> = await supabase
.from('users')
.select('nickname, email, profile_image')
.eq('user_id', userId)
.single();
if (error) {
console.error('getUserInfo api error =>', error);
}
// zustand에 상태 업데이트
if (userInfo) {
useUserStore.getState().setUserInfo(userInfo);
}
return userInfo;
};
const { data: userInfo, isPending } = useQuery({
queryKey: ['user', userId],
queryFn: () => getUserInfo({ userId })
});
문제 해결:
- useEffect를 사용하여 userId가 변경될 때마다 getUserInfo 함수를 호출하도록 변경
- 이렇게 함으로써 userId 값이 변경되고 나서야 getUserInfo 함수가 호출되므로, userId로 null을 받아오지 않는다.
- 이후 userInfo를 상태로 관리하여 API 호출 결과를 상태에 저장
// zustand로 userInfo 상태 관리
const { userInfo, setUserInfo } = useUserStore();
useEffect(() => {
if (userId) {
const fetchUserInfo = async () => {
const userInfoData = await getUserInfo({ userId });
if (userInfoData !== null) {
setUserInfo(userInfoData);
}
};
fetchUserInfo();
}
}, [userId, setUserInfo]);
'TIL' 카테고리의 다른 글
[트러블 슈팅🔥] 프로젝트 - 팀 전체 build 시, error 발생 및 해결과정 (0) | 2024.05.22 |
---|---|
[TIL] zustand 새로고침 시 상태유지 reset ⇒ persist로 상태 유지 시키기 / role-based authentication (0) | 2024.04.12 |
[TIL] 내가 원하는 commit으로 돌아가기 / 사라진 코드 복구하기 (0) | 2024.04.04 |
[트러블 슈팅🔥] image url은 있는데 사진이 안 뜸 with supabase storage (0) | 2024.04.04 |
[TIL] 240401(월) useMutation으로 수정하기 with supabase (0) | 2024.04.02 |