부트캠프 React 과정 9.01

김진우·2023년 9월 1일
0

오늘의 목표

  • 알고리즘 문제풀기

  • 팀프로젝트 진행하기

  • 팀프로젝트 발표 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,
}};
``

느낀점

  • 오늘 팀프로젝트 발표 PPT를 만들었는데 생각보다 오랜시간이 걸려서
    팀프로젝트를 진행하는시간이 적었다. 근데 내가 해야될일이 많이 남아있어서 촉박하지만
    하나하나 해결해서 꼭 MVP전에 내가 맏은 기능을 완료 해야 겠다는 생각을 했습니다.

0개의 댓글