카테고리 없음

Firestore 실습 addDoc & getDoc

codi-3 2024. 7. 19. 18:10

Firestore 데이터베이스를 활용하기 앞서 firbaseConfig에 본인의 데이터값을 입력해준뒤 초기화를진행하여야한다.

// 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 = {
  apiKey: "your-api-key",
  authDomain: "your-auth-domain",
  projectId: "your-project-id",
  storageBucket: "your-storage-bucket",
  messagingSenderId: "your-messaging-sender-id",
  appId: "your-app-id"
};



// Firebase 인스턴스 초기화
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

addDoc :함수는 지정된 컬렉션에 새 문서를 추가합니다. 문서의 ID는 자동으로 생성되며, 데이터는 지정된 필드와 값으로 저장됩니다.\

 

*주의 버튼의 onClick함수들은 id 값을 주어서 다시 정의해야한다.

 // id = postingbtn 인 버튼을 클릭할시
 
 $("#postingbtn").click(async function () {
 			//할당된 id의 입력된값을 .val()받아와 변수에저장한다
            let image = $('#image').val();
            let title = $('#title').val();
            let content = $('#content').val();
            let date = $('#date').val();
			
            //doc 이라는 dictionary 안에 '키값' : value의형태로 넣기위해 structure를 정의해준다. 
            let doc = {
                'image':image,
                'title':title,
                'content':content,
                'date':date
            };
            
            //위처럼 설정된 doc이라는 dictionary형태를 Firebase Database 에 "albums"라는 컬렉션으로 추가한다.
            await addDoc(collection(db, "albums"), doc);
        })

 


getDoc:함수는 지정된 문서를 가져옵니다. 문서의 ID를 알고 있을 때 사용되며, 해당 문서의 데이터를 읽을 수 있습니다.

// docs를 getDoc함수를이용해 firebase 데이터베이스 album collection을 불러옴
let docs = await getDocs(collection(db, "albums"));
		//for loop을사용해 docs의 있는데이터들을 분리
        docs.forEach((doc) => {
            let row = doc.data();
			//key값의 있는 벨류들을 지정된 변수들의 대입
            let image = row['image'];
            let title = row['title'];
            let content = row['content'];
            let date = row['date'];
			// 바디태그의 skeleton중 원하는곳에 데이터를 삽입하여 temp_html을 생성
            let temp_html = `
            <div class="col">
                <div class="card h-100">
                    <img src="${image}"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">${title}</h5>
                        <p class="card-text">${content}</p>
                    </div>
                    <div class="card-footer">
                        <small class="text-muted">${date}</small>
                    </div>
                </div>
            </div>`;
            //값이 들어간 temp_html을 card id값의 바디에삽입
            $('#card').append(temp_html);
            //forloop이므로 다음값을 똑같이적용
        });

위와같이 addDoc을사용하여 사용자가 입력한 값들을 Firebase에 collection을생성해 저장한뒤 getDoc로 불러온뒤 해당 데이터값으로 html의 원하는 id값을 가진곳에 추가가 가능해진다.

 


 

이를적용하여 등록한 데이터값들은 HTML파일 새로고침되어도 Firebase의 값이저장되어있어 불러올수있다.