Dev

[DB][Git] Firebase, Github 배포

syuare 2025. 3. 27. 17:25

 

로컬에서 데이터를 입력하고, 출력하는 작업을 열심히 하더라도 새로고침을 한 번 하면 해당 작업한 기록들이 사라진다.

이것을 남기려면 어떻게 해야할까? 

 

바로 입/출력한 데이터를 저장하고, 저장한 것을 불러올 수 있는 공간을 제공하면 된다!

이 공간을 바로 Database(DB), 데이터베이스 라고 할 수 있다.

 

많은 DB가 있겠지만 그 중 별도 개발없이 무료로 사용할 수 있는 Firebase를 사용해보자


파이어베이스(Firebase)

구글(Google) 기반 웹에서 데이터베이스(Database)를 저장할 수 있게 해주는 서비스 (서버 개발 없이 제작 가능)

Firebase - 프로젝트 만들기 - 웹/앱 등록


파이어스토어(Firestore)

구글의 클라우드 기반 NoSQL 데이터베이스(Database,DB)

  • *SQL와 같이 테이블이나 행이 없음 → NoSQL DB

데이터를 저장하고 관리할 수 있는 기능을 제공한다. (데이터를 모아두는 장소)

데이터 구조

컬렉션(collection) - 문서(document) - 하위 컬렉션(subcollection) 구조를 가짐

  • 컬렉션: 비슷한 유형의 데이터를 모아두는 상자
    • Firestore에 저장되는 문서는 컬렉션으로 저장됨
    • 컬렉션은 직접 생성하거나 삭제할 필요 없이, 첫 번째 문서가 만들어질 때 생성되고, 컬렉션 내 모든 문서가 삭제되면 컬렉션도 삭제됨
  • 문서: Firestore의 저장 단위로 컬렉션 안에 들어가는 개별 데이터 객체
    • JSON 형태의 필드-값 형태의 데이터
    • 아래의 이미지 예시
      • 0RJE0Mk로 시작하는 문서에는 comment, image, star, title라는 키 값을 가진 필드를 가지고 있음
  • 하위 컬렉션: 문서 내 또 다른 컬렉션을 포함할 수 있음
    • 컬렉션 내 문서를 저장하는 구조에서 문서 내 또 다른 컬렉션을 추가함에 따라 계층적인 구조로 만들기 가능
더보기
상점 (컬렉션)
│
├── 상점ID_1 (문서)
│   ├── 이름: "ABC 마트"
│   ├── 위치: "서울시 강남구"
│   ├── 전화번호: "010-1234-5678"
│   └── 제품 (하위 컬렉션)
│       ├── 제품ID_1 (문서)
│       │   ├── 이름: "노트북"
│       │   ├── 가격: 1500000
│       │   └── 재고: 20
│       └── 제품ID_2 (문서)
│           ├── 이름: "스마트폰"
│           ├── 가격: 1000000
│           └── 재고: 30
│
└── 상점ID_2 (문서)
    ├── 이름: "XYZ 매장"
    ├── 위치: "인천광역시 남동구"
    ├── 전화번호: "010-9876-5432"
    └── 제품 (하위 컬렉션)
        ├── 제품ID_3 (문서)
        │   ├── 이름: "텀블러"
        │   ├── 가격: 20000
        │   └── 재고: 50
        └── 제품ID_4 (문서)
            ├── 이름: "가방"
            ├── 가격: 50000
            └── 재고: 10

Firestore 데이터 모델

 

파이어스토어 설정

파이어베이스 - 빌드 - Firestore Database 선택 - 데이터 베이스 만들기

파이어스토어 규칙 수정 (false → true)

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true; // 기존 false로 되어 있음
    }
  }
}

 

script 태그에 type="module" 넣기

파이어스토어 세팅 코드 넣기

  • Firebase 구성 정보 설정은 아래에서 확인할 수 있는 내용을 가져오면 된다.
    • const firebaseConfig > firebase > 프로젝트 설정 > SDK 설정 및 구성 > 구성
// Firebase SDK 라이브러리 가져오기
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js";
import { getFirestore } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { collection, addDoc } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";


// Firebase 구성 정보 설정
const firebaseConfig = {
        //본인 설정 내용 채우기 
};


// Firebase 인스턴스 초기화
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
더보기
Firebase 구성 정보 설정

Firebase에 데이터 넣기 - addDoc

script 타입을 module로 변경하고 나면 기존의 onclick 등이 작동되지 않음

JQuery를 이용해 해당 동작을 코딩으로 작업하게 할 필요가 있음

//'id값이 있는 태그를 '클릭' 시 아래의 동작을 실행
$("#id").click(async function () {
    let doc = {};
    await addDoc(collection(db, "콜렉션이름"), doc);
})

 

작업 후 새로고침 동작

window.location.reload();

 

Firebase에 저장된 데이터를 가져오기

let docs = await getDocs(collection(db, "콜렉션이름"));
docs.forEach((doc) => {
    let row = doc.data();
    console.log(row);
});

 


 

작업 내용 배포해보기 - Github

배포란?

지금까지의 작업은 작업한 내용을 파일로 여는 형태이기 때문에 작업한 PC에서 밖에 볼 수 없음

모바일이나 다른 PC 등 어디서든 볼 수 있도록 하려면 "배포"가 필요함

 

Github: 개발자들이 각자 작업한 코드를 저장하여 타인에게 공유할 수 있는 곳

  • Github repository 만들기 -> uploading an existing file 클릭 후 작업한 html파일 업로드 하기
  • 배포 방법 : Settings > Pages > Branch - None에서 main으로 변경

 

 

'Dev' 카테고리의 다른 글

[DB] 서버, 데이터베이스 개념  (0) 2025.03.25