• 로그인
  • 장바구니에 상품이 없습니다.

Firestore Database에서 데이터 가져오는 법 (읽기)

 

 

0:00 코드짜기 귀찮을 때 설치할 라이브러리 

3:25 Firestore Database 구경하고 테스트상품 저장해보기

7:44 Database에 있는 데이터 가져오는 법

 

 

 

Bootstrap 5, jQuery 설치파일

 

Bootstrap 5 CSS 파일

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">

Bootstrap 5 JS 파일

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>

jQuery 3 설치 파일

<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> 

HTML 파일안에 아무데나 넣으시면 설치 끝입니다.

근데 CSS 파일은 <head>안에 넣는게 좋겠죠? 

그리고 jQuery 설치한 곳 밑에서 jQuery 문법이 사용가능합니다. 

이거 모르면 왜 jQuery 안되냐고 맨날 물어봄 

 

[collapse]

 

 

html javascript 드럽게 길게 코드짜기 귀찮으니 Bootstrap 5버전과 jQuery 라이브러리를 사용할 것입니다. 

그리고 당근마켓스러운 메인페이지 레이아웃 부터 만들어볼 것인데

오늘 Firebase 내용 빠른 요약은

Firestore Database에서 데이터 읽으시려면 db.collection('컬렉션이름').get().then(()=>{}) 이게 끝입니다. 

 

 

 

 

 

상단메뉴 (Navbar) 만들기

 

Bootstrap을 설치하셨는데 이게 뭐냐면 그냥 HTML CSS 짜기 귀찮을 때 설치하는 라이브러리입니다.

설치가 잘 되었으면 Bootstrap 공식사이트 들어가셔서 원하는 UI 복붙하면 끝임 

그래서 그 사이트에서 Navbar를 찾으셔서 맘에드는 디자인 복붙하면 상단메뉴 제작 끝입니다.

 

 

 

 

 

Firestore Database 에 데이터를 저장할 것임

 

우리가 데이터베이스라고 부르는게 있습니다.

그냥 데이터저장하는 곳을 데이터베이스라고 부릅니다. 

 

 

 

가장 흔한 데이터베이스는 엑셀 생각하시면 됩니다. 가로세로 칸에다가 데이터 쭉 저장합니다.

이렇게 생긴걸 관계형 데이터베이스라고 부르는데 특징은 엑셀 떠올리시면 됩니다.

그리고 SQL이라는 언어를 따로 배우셔야 자료저장/출력이 가능합니다.

그래서 초보들이 무서워함 

 

근데 우리가 지금부터 사용할 데이터베이스는 비관계형 NoSQL 데이터베이스입니다. 

이건 데이터를 이런 식으로 저장합니다. 

 

 

 

▲ 폴더를 만들고 그 안에 파일을 집어넣는데

파일은 이렇게 생겼습니다.

 

▲ object 자료형처럼 왼쪽에 이름, 오른쪽에 값을 넣습니다.

이렇게 object 자료형처럼 그대로 데이터를 쉽게 저장할 수 있는게 NoSQL 데이터베이스입니다.

그냥 변수만들듯 쉽게 자료저장가능

우리가 쓸 Firestore Database도 이렇게 저장합니다. 

함께 있는 Realtime Database도 유사합니다. 그건 그냥 하나의 큰 Object 자료형임 

 

 

 

 

 

Firestore에다가 데이터좀 저장해보십시오

 

익숙해질겸 테스트삼아 상품2개 정도 저장해봅시다. 

 

 

▲ Firebase console에서 Firestore 들어간 후에 사진처럼 데이터를 몇개 저장해봅시다.

1. product라는 컬렉션을 만드신 후에 (컬렉션은 폴더)

2. 상품1이라는 제목으로 문서를 하나 넣습니다 

3. 그 다음에 그 문서 안에는 object 자료형처럼 { 가격 : 1000, 제목 : '면도기' } 이런 식으로 저장해보십시오.

4. 상품2도 심심하니까 만들어봅시다. 

 

대충 이런식으로 저장합니다.

Firestore console 에서 이것저것 만지면서 데이터베이스랑 좀 친해지십시오 

불알친구하셈 

 

 

 

 

 

HTML 파일에서 Database에 있던 자료 꺼내는 법

 

<script>
  const db = firebase.firestore();
  db.collection('product').get().then((결과)=>{
    console.log(결과)
  })

</script>

물론 Firebase 설치코드 하단에 적으셔야 잘 동작합니다.

db.collection(컬렉션명).get() 이라고 쓰시면 내가 원하는 컬렉션에 있는 모든 문서를 가져올 수 있습니다. 

그리고 가져온 결과는 .then() 안의 ()=>{} 함수 파라미터에 담겨있습니다. 

 

아무튼 따라치면 진짜로 다 가져옵니다. 

실은 안가져오고 에러가 납니다.

크롬 콘솔창 열어보시면 "Firebase 어쩌구 missing permission" 이런 에러가 뜰텐데

왜냐면 Database에 누가 접근할 수 있는지 규칙을 설정 안해주셔서 그렇습니다.

 

 

 

 

▲ 파이어베이스 콘솔들어가셔서 Firestore - 규칙을 눌러봅시다.

그리고 위처럼 바꿔주시면 됩니다.

나중에 설명할 것인데 read, write를 누가할 수 있는지 정의하는 부분입니다.

if 뒤에다가 누가 접근할 수 있는지 적으면 되는데 true로 바꾸면 누구나 접근가능합니다.

보안이 쓰레기지만 지금은 개발중이니 이렇게 해둡시다. 

아무튼 저장하고 새로고침 해보면 진짜 DB 게시물 잘 가져옵니다. 성공 

 

 

 

 

 

 

가져온 게시물을 하나하나 출력해보려면

 

가져온 결과를 출력해보면 뭔가 암호문같습니다.

 

 

▲ 저게뭐람 ㄷㄷ 구글이 만든 것들은 항상 유저 친화적이지 않습니다.

봐도 모르겠는 이런 것들은 그냥 Firebase 설명서 보고 따라해야합니다. 어쩔 수 없음 

 

 

 

<script>
  const db = firebase.firestore();
  db.collection('product').get().then((결과)=>{
    결과.forEach((doc)=>{
      console.log(doc.data())
    })
  })

</script>

▲ 따라치면 컬렉션안에 있던 문서를 출력해볼 수 있습니다.

Firebase 8버전 문법인데 최근에 나온 모듈식 9버전보다 초보에겐 훨 낫다고 생각합니다 (틀딱)

가져온 결과는 항상 forEach()를 붙여서 반복문을 돌릴 수 있습니다.

forEach가 뭐냐면 array자료에 붙일 수 있는데 왼쪽에 있는 자료 갯수만큼 코드를 실행해줄 수 있습니다.

지금은 DB에 있던 자료가 2개니까 2번 실행이 되겠네요 console.log(doc) 이라는 코드가요.

doc이라는 변수는 DB에 있던 문서들입니다. 실은 doc.data()까지 써야 문서들이 나옴 

 

 

 

아무튼 새로고침해서 실행해보면 doc이라는걸 콘솔창에 출력해보라고 했으니까

{ 제목 : '면도기', 가격 : 1000 } 이런 자료가 크롬 콘솔창에 출력될 것입니다.

이 자료들을 HTML에 집어넣으면 당근마켓같은 메인페이지가 완성되겠는데요

그건 다음시간에 합시다. 

 

 

 

SEE ALL Add a note
YOU
Add your Comment

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠