오늘의 목표
알고리즘 문제풀기
팀프로젝트 진행하기
팀프로젝트 발표 PPT 만들기(팀원들과함께)
알게 된것
supabase 원하는 데이터 가져오기에서 오류가 났는데
문제는 supabase와 api 연결중 특정 테이블에 포함하는 정보를 찾을때 여러개의 값이 있는데
원하는 테이블의 값이 찾아지지 않는 문제가있었다.
나는 plan_mates에서 user_id 부분에 특정값을 찾기 위해서 처음 사용했던 방법은 .eq였다.
근데 user_id 부분에는 배열의 형태로 id 값들이 들어가있어서 원하는 값을 가져올수가 없었다.
.eq는 값이 정확히 일치하는지 확인을 하고 정확하게 일치하는 레코드만 가져오는것이였다.
그래서 나는 이문제를 해결하기 위해서
contains 연산자는 주로 문자열이나 배열과 같은 데이터 내에서 특정 값을 찾아내며, 부분 문자열이나 요소의 포함 여부를 확인 하는 연산자 이다.
그래서 .contains를 사용해서 user_id 열에서 id값이 배열내에 포함되어있는 레코드를 가져옴으로써 문제를 해결했습니다.
``
export const getPlansWithMates = async (userId: string) => {
const { data: matesData, error: matesError } = await supabase
.from('plan_mates')
.select()
// 배열의 비교는 contains 연산자를 사용
.contains('users_id', [userId]);
if (matesError != null) {
console.log('에러 발생', matesError);
throw new Error('getPlansWithMates 에러 1발생');
}
const userIds = matesData.map((data) => data.users_id);
const planIds = matesData.map((data) => data.id).flat();
if (userIds.length === 0) {
throw new Error('getPlansWithMates 에러 2발생');
}
const plansData = await getPlans(planIds);
const usersDataList = [];
for (const plan of userIds) {
const users = await getMatesByUserIds(plan);
usersDataList.push(users);
}
// console.log('plansData=>', plansData);
// console.log('userData=>', usersDataList);
return {
plansData,
// 배열로 가져오던걸 객체로 바꾸기위해서
usersDataList,
}};
``
느낀점