멈멈-토이프로젝트(React)1

수파베이스에서 테이블 비교 해서 이미지 출력

순9 2024. 5. 24. 23:59
728x90

A  table

예시

key : uuid, a, b, c, d, e, f

 

B table

key :id, a, content

 

두개의 테이블을 비교 해서 B 테이블의 content 출력하기

 

1. A테이블과 B테이블 연동하기B 테이블에서는 겹치는 키 유니크 설정

2. A 테이블에서 연동할 키 Foreign Keys로 연동

3. 테이블에서 데이터 출력하기(수파베이스)

const [imgW, setImgW] = useState("");
 const handleWalk = async () => {
    const { data, error } = await supabase.from("writedb").select(`
            walk,
            listwalk (
                url
            )
        `);

    if (data) {
      const urls: UrlsType = data.map((item) => item.listwalk);
      const urlArr = Object.values(urls[0]);
      const url = urlArr[0];
      setImgW(url.toString());
    } else {
      console.log(error);
    }
  };

문제 사항 

data의 데이터 모습

[{walk, listwalk:{url}}]

- urls 데이터 형태 {url} 객체 형태  urls.url을 했을 경우 url 타입을 any로 인식 하는 상황 발생

- 객체의 value만 가져오도록 함

- urlArr 의 타입을 확인 후 0번 인덱스 값 가져옴

- string형태로 나오는 것 확인 

- url을 아직도 any로 인식 해서 문자형으로 확실하게 인식 할 수 있도록 함

 

4. 불러온 데이터를 배열로 담기

5. 코드 수정

if (data) {
      const urls: UrlsType = data.map((item) => item.listwalk);
      const urlArr = Object.values(urls[0]);
      const url = urlArr[0];
      console.log(urlArr);
      setImgW(url.toString());
      setImgList((prevList) => [...prevList, url.toString()]); //추가
    } else {
      console.log(error);
    }

 

 

어렵다!!!!!!!!!!!!!!너무 어렵다 재밌다!!!!!!!!!!!!!!속터진다!!!!!!!!!!!!!!!