[React.js + Firebase] Firestore 데이터 React로 연동하기 - 초간단 사진 게시판 만들기(1)

2023. 5. 27. 01:48·Web
반응형

이 전 포스트에서 React와 Firebase를 활용하여 서버리스한 게시판을 만들기 위해 기본적인 세팅을 완료했다

이번 포스트에서는 연결 해 놓은 Firebase에서 Firestore이라는 빌드를 활용하여 아주아주 간단한 Back-end 환경을 구축 해 보도록 하겠다.

2023.05.25 - [Web] - [React.js + Firebase] 초간단 사진 게시판 만들기(0) - create-react-app, firebase 연동

 

[React.js + Firebase] 초간단 사진 게시판 만들기(0) - create-react-app, firebase 연동

간단한 기능의 게시판이나 웹사이트를 만들 때, React.js를 사용한 정적 페이지로 만드는 방법은 추후에 콘텐츠 수정이나 구조 변경을 해야 할 때 코드에 접근해야 하는 것이 필수적이다. 따라서

kmuhan-study.tistory.com

💡Firestore이란?
기본적으로 NoSQL 형식의 서비스를 제공하며, 데이터 저장, 읽기, 쓰기, 삭제, 갱신 까지 CRUD한 통신이 아주 쉬운 방법으로 가능하다.

Firebase에 로그인 한 후, 좌측 빌드 메뉴에서 Firestore Database를 선택, 데이터 베이스 만들기를 클릭한다. 

데이터베이스 만들기 클릭

그러면 이런 화면이 나오는데, 이는 Firebase의 읽기 및 쓰기에 관련된 권한으로 프로덕션 모드에서 시작으로 체크를 눌러 주도록 한다. 이 규칙은 추후에 수정 할 수 있으므로 참고.

프로덕션 모드에서 시작 선택

마지막으로 파이어스토어 서버의 위치 설정을 물어보는데. Google Firebase의 분산 서버가 전 세계에 있어서 사용자가 원하는 트래픽이 많이 발생 될 것 같은 지역쪽으로 선택 해 주면 된다. 우리는 한국인이므로 Seoul 선택해도 좋고, United States도 큰 문제 없다.

사용설정 클릭

이제 컬랙션 시작을 누르고, 게시판에 표시될 아이템들에 대한 컬렉션을 만들어 준다.

💡 NoSQL에서의 문서(Document)는 객체지향에서의 객체와 유사하게 하나의 단위를 나타내는데, 자유롭고 빠른 쿼리가 가능하다는 것이 장점이다. 이 프로젝트에서는 하나의 문서가 게시판에 표시될 하나의 아이템이라고 생각하면 된다. 각 아이템은 여러가지 key-value 형식의 자유롭게 설정할 수 있는 속성을 가지며, 이 속성들의 key값으로 문서들을 쉽고 빠르게 쿼리할 수 있다.

 

문서 아이디는 1로 할당 해 주고, 그 아래에 name이라는 이름을 가지고 test라는 벨류를 갖고 있는 필드를 추가 해 준다.

여기까지 Firebase 표시 세팅이 끝났다.


이제 우리가 올려놓은 데이터를 클라이언트로 가져와야 한다.

초기화해준 firebase app으로 firestore를 불러오고 db로 export 해 준다.

 

firebase.js

import { initializeApp } from "firebase/app";
// firestore를 불러오는 모듈을 임포트
import { getFirestore } from "firebase/firestore"

const firebaseConfig = {
  apiKey: process.env.REACT_APP_apiKey,
  authDomain: process.env.REACT_APP_authDomain,
  projectId: process.env.REACT_APP_projectId,
  storageBucket: process.env.REACT_APP_storageBucket,
  messagingSenderId: process.env.REACT_APP_messagingSenderId,
  appId: process.env.REACT_APP_appId,
  measurementId: process.env.REACT_APP_measurementId
};

const app = initializeApp(firebaseConfig);
// firestore 객체 생성
const db = getFirestore(app);
// firestore export
export {db}

create-react-app으로 자동 생성된 App.js를 수정해서 테스트 데이터를 출력할 수 있도록 해본다.

 

🔦 주요 메서드 설명

doc: doc(db, 컬렉션이름, 문서id)로 원하는 document의 참조를 생성한다.

getDoc: getDoc(참조)로 하나의 원하는 document의 Snapshot(firestore에서 쓰는 그 당시 document의 데이터를 의미한다.)를 가져온다. axios get과 유사하므로 Data Fetching시에 비동기로 처리 해 준다.

 

App.js

// firebase.js에서 db를 import
import { db } from './firebase';
import { useEffect, useState } from 'react';
// firestore의 메서드 import
import { doc, getDoc } from 'firebase/firestore';

function App() {
  const [test, setTest] = useState()
  // async - await로 데이터 fetch 대기
  async function getTest() {
    // document에 대한 참조 생성
    const docRef = doc(db, "items", "1");
    // 참조에 대한 Snapshot 쿼리
    const docSnap = await getDoc(docRef);

    if (docSnap.exists()) {
      setTest(docSnap.data())
    }
  };
  // 최초 마운트 시에 getTest import
  useEffect(() => {
    getTest()
  }, [])
  return (
    <div>
        {test !== undefined &&
        <div>{test.name}</div>}
    </div>
  );
}

export default App;

 

이제 다시 애플리케이션을 실행 시켜보면, 3000번 포트에서 아주 잘 test document의 데이터를 받아오는 것을 확인 할 수 있다.

3000번 포트

다음 포스트에서는 react-router-dom을 이용해서 동적 라우팅을 하여 이미지 게시판이 효율적으로 관리될 수 있도록 해 보겠다.


지금까지 활용한 모든 코드들은 firebase 공식 docs에서 인용 했다. firebase는 공식 docs가 굉장히 잘 되어있는 서비스 중에 하나이므로, 참고하면서 개발을 진행하길 권장한다.

https://firebase.google.com/docs/firestore?hl=ko&authuser=0

 

Firestore  |  Firebase

유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 측 개발 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화하세요.

firebase.google.com

 

반응형

'Web' 카테고리의 다른 글

[React.js + Firebase] react-router-dom NavLink 사용법 - 초간단 사진 게시판 만들기(4)  (0) 2023.06.13
[React.js + Firebase] react-router-dom 동적 라우팅 - 초간단 사진 게시판 만들기(3)  (2) 2023.05.29
[React.js + Firebase] React Suspense 적용 - 초간단 사진 게시판 만들기(2)  (0) 2023.05.28
[React.js + Firebase] React, firebase 연동하는법 - 초간단 사진 게시판 만들기(0)  (1) 2023.05.25
'Web' 카테고리의 다른 글
  • [React.js + Firebase] react-router-dom NavLink 사용법 - 초간단 사진 게시판 만들기(4)
  • [React.js + Firebase] react-router-dom 동적 라우팅 - 초간단 사진 게시판 만들기(3)
  • [React.js + Firebase] React Suspense 적용 - 초간단 사진 게시판 만들기(2)
  • [React.js + Firebase] React, firebase 연동하는법 - 초간단 사진 게시판 만들기(0)
kmuhan
kmuhan
나의 배움 너에게 가르침
  • kmuhan
    kmuhan의 도움이 되는 개발
    kmuhan
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Web (5)
      • Algorithm (1)
      • Python (1)
      • Error (1)
      • Information (2)
      • Statistics (0)
      • Computer Network (0)
      • AI (9)
        • AI Hardware (8)
        • Paper reviews (1)
      • Verilog (5)
        • HDLBits (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    GPU
    베릴로그
    Machine Learning
    인공지능
    머신러닝
    HDL
    Firestore
    국민대학교
    verilog
    인공지능 하드웨어
    TPU
    딥러닝
    React
    WEB
    Deep Learning
    firebase
    nvidia
    최적화
    hdlbits
    Systolic Array
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kmuhan
[React.js + Firebase] Firestore 데이터 React로 연동하기 - 초간단 사진 게시판 만들기(1)
상단으로

티스토리툴바