프로그래밍 스터디( 공부노트 )/파이어베이스

파이어베이스 Firestore Database - 데이터 가져오기

김갤럭시 2021. 11. 5. 13:43
반응형

파이어스토어 데이터 베이스는

기존의 관계형 데이터베이스와 다른 NoSQL 데이터 베이스를 가지고 있습니다.

그래서 초보자 분들도 쉽게 접근을 할 수 있습니다. 

오늘 설명하고자 하는것은 파이어베이스 8 버전입니다.

 

파이어스토어 데이터베이스

 

프로젝트를 시작하고 파이어스토어로 들어가면 쉽게 조작을 할 수 있도록 되어있습니다.

결론부터 말씀을 드리면 파이어스토어는

컬렉션(collection)문서(document)로 이루어져 있습니다. 

그리고 문서(document)에 key 와 value 값을 넣어주시면 됩니다.

 

컬렉션(collection)이 블로그라면 문서(document)에는 블로그 글이 하나씩 들어가게 됩니다.

컬렉션(collection)이 제품이라면 문서(document)엔은 제품이 하나씩 들어가게 되는 거죠!

문서(document)의 블로그 글, 제품은 작성자 / 일자 / 제목 / 내용 등등이 들어가며 되겠죠??

 

파이어베이스 콘솔에서 그냥 막 연습하시면 되겠습니다. 만들어보고 지워보고 하세요!!

 

 

자 그럼 이 데이터를 어떻게 가져올 수 있을까요?

아래와 같은 코드를 이용해서 가져올 수 있습니다.

const db = firebase.firestore( );
  db.collection( '내가 만든 컬렉션 이름' ).get( ).then( (결과)=>{
    console.log(결과)
  } )

db.collection('blog').get() 이렇게 코드를 친다면

blog 컬렉션에 있는 모든 도큐먼트를 가져오게 됩니다. 모조리 전부 다!!

만약에 결과를 자세하게 콘솔창에서 보고 싶다면

then에 함수를 넣고 그 파라메터에 변수를 선언하고 콘솔로그에 담아서 보면 됩니다.

함수는 화살표 함수로 해도 됨.

만약 콘솔에 데이터를 찍어보면 엄청나게 많은 정보들들 볼 수 있게된다. 

 

 

자료를 하니씩 보고 싶다면?

db.collection('원하는 컬렉션')
        .doc('원하는 도큐먼트')
        .get( )
        .then( (result) => {
          console.log(result.data());         
        });

꼭 파라메터 result 뒤에는 data()를 붙여줘야 합니다.

 

 

그리고 누가 문서를 전부 가져오고 싶겠습니까?

10만개가 넘으면 어떻게 하려고 합니까? 그럼 쿼리를 해야겠죠?

쿼리를 하는 방법은 아래와 같습니다.

db.collection('원하는 컬렉션')
        .where('원하는 조건1')
        .where('원하는 조건2')
        .doc('원하는 도큐먼트')
        .get()
        .then((result) => {
            .....
        });

쿼리는 위와 같이 doc() 과 get() 이 나오기 이전에 where라는 조건을 주면 됩니다.

여러개를 넣을 수 있으며 이 조건을 이용해서 원하는 쿼리가 가능합니다.

더 정보를 추가하자면 where 뒤에 orderBy, limit 이라는 조건도 추가할 수 있습니다.

 

 

만약 데이터를 전부 가져오고 싶다면?

일반적으로

db.collection('blog').get().then( (result) => { console.log(result.data()) })

는 동작하지 않습니다. 

db.collection('product')
        .get( )
        .then( (result) => {
          result.forEach( (allDoc) => {
            console.log(allDoc.data());
          });
        });

then 으로 받아온 결과를 forEach문으로 받아와서 실행하면 동작합니다.

그리고 공식 문서를 보면 forEach를 쓰라고 되어있습니다.

 

 

정리를 해본다면

const db = firebase.firestore();
     db.collection('product') //원하는 컬렉션 선택하기, 지금은 product를 선택함
        .where('원하는 조건1') //쿼리 조건 설정
        .where('원하는 조건2') //쿼리 조건은 여러개 설정 가능함
        .orderBy('오름차순 내림차순?') //정렬방식 최신자료 먼저 정렬 가능함
        .limit(10) //가지고 오는 갯수를 제한 할 수 있다.
        .doc('원하는 도큐먼트') //원하는 도큐먼트 선택하기
        .get() //이제까지 정보를 통해 자료를 가져오라는 의미
        .then((result) => { // 결과를 then으로 받을 수 있다.        
          });
        });

 

 

 

반응형