fireBase는 NoSQL?

박경찬·2022년 8월 6일
0

리엑트로 클론 코딩을 하면서 몰랐고 새로운게 있어서 남긴다!! 헤헤
파이어베이스로 테스트 기반 코딩을 하려면 기억해둬야 하지 않을까 싶어서 남긴다!

내머리는.. 똑똑하지 않기 때문...

 const getMyNweets = async () => {
    const nweets = await dbService
      .collection("nweets")
      .where("creatorId", "==", userObject.uid)
      .orderBy("createdAt")
      .get();
    console.log(nweets.docs.map((doc) => doc.data()));
  };

위 내용은 현재 사용자의 프로필을 가져오기 위해 작성한 내용이다.

코드 내용부터 간단하게 확인하고 가쟈

dbServicefirebase.firestore() import 하여 가져온것이다.

firebase.firestore() 는 firebase 저장소이다.

collection은 DataBase 기준으로 설명하면 Table 같은 개념 이라고 생각하면된다.

collection("nweets")

orderBy는 오름차순 정렬 기준인데 SQL구문을 사용해본 사람이라면 자주 쓰는 구문이다. 물론 내림차순 정렬기준도 orderby를 사용한다.
ORDER BY <column> DESC 이런형태로 사용한다.

where은 조건을 주기위해 사용한다.
이를테면 SELECT <COLUMN> FROM <TABLE> WHERE <COLUMN> = 조건 DB에서 사용하는 뜻과 동일하다.
음.. 프론트엔드 개발자에게 설명하라면 어떻게 설명해야할까..까.. 음 ~ where은 필드의 조건을 줘서 조건에 해당하는 필드값을 가져올수 있도록 도와주는 녀석?! .. 이라고 하면될까..?

본론으로 넘어가서 저 구문을 실행시키면 아래와 같은 에러가 확인된다.

일단 fireBase는 noSQL기반 DB 라서 작동될수가 없다.
오류 내용을 살펴보면 해당 쿼리에 index가 필요하다고 한다.

이말은 우리가 이쿼리를 사용할거라고 DB로 알려줘야 한다.
에러를 보면 우리가 여기서 만들수 있다고 말해주고 있다.

링크를 크릭하면 index를 만들수 있는 페이지로 이동한다.

인덱스가 만들어지기 까지 조그만 기다려주자 생각보다 시간이 걸리네?.. 설정이 완료되면 사용 설정됨 이라고 표기된다.

웹 페이지를 다시 새로고침 하면 이전에 보였던 오류는 사라지고
사용자의 프로필을 가져올수 있다.

데헷

내림차순으로 받기위해서는

 .orderBy("createdAt", "desc")

desc를 추가해주면된다.

검증하기위해서 실제로 collection 에 저장된 creatorId를 변경해보자 where 절에 creatorIduserObject.uid 가 같은 프로필만 가져오라고 조건을 줬기 때문에 실제로 같은거만 들고오는지 검증이 필요하다.

검증완료!

0개의 댓글