본문 바로가기

Firebase/Firestore

Firestore - addDoc, deleteDoc

728x90

Google Firebase에서 제공하는 NoSQL 클라우드 데이터베이스 서비스로, 모바일, 웹, 서버 개발에 사용할 수 있다.

제공되는 SDK를 통해, Node.js, 자바, Python, Unity, C++, Go 등의 여러가지 언어로 접근할 수 있어 편리 하다.

 

실시간 데이터베이스보다 많은 빠른 쿼리와 원활한 확장성을 제공하나, 아래 사이트의 장단점을 통해 어떤 서비스를 선택할 지 도움이 될거같다.

https://firebase.google.com/docs/firestore/rtdb-vs-firestore?hl=ko 

 

데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스  |  Firebase

Google I/O 2023에서 Firebase의 주요 소식을 확인하세요. 자세히 알아보기 의견 보내기 데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스 컬렉션을 사용해 정리하기 내 환경설정을 기준으로

firebase.google.com

개인적으로 정렬같은 쿼리를 원한다면 Firestore 가 낫지만, 역시 데이터를 가져오고 업데이트해서 실시간이 중요하다면 정말 Raltime이 나은거 같다.

 

firebase 버전은 10.1.0 기준 CRUD를 간단하게 설명하자면, 

addDoc

import { addDoc, collection } from "firebase/firestore";
import { db } from "./firebase";

export const addStore = async (): Promise<void> => {
    try {
        await addDoc(collection(db, "collection_name"), {
        	name: 'name',
            age: 20
        })
    }
    catch (e) {
        console.log(e)
    }
}

을 사용하면, collection_name 하단 문서의 ID가 string으로 자동 생성되고, item의 object가 필드로 추가된다.

여기서 createdAt의 시간을 firestore timestamp에 넣으려면, 

import { serverTimestamp } from 'firebase/firestore';

serverTimestamp() 을 사용하면 된다.

 

deleteDoc

import { deleteDoc, doc } from "firebase/firestore";
import { db } from "./firebase";

export const deleteItem = async (): Promise<void> => {
   const docRef = doc(db, "collection_name", "docId");

    try {
        await deleteDoc(docRef)
    } catch (e) {
        console.log(e)
    }
}

문서의 자동으로 생선 된 docId 를 인자로 deleteDoc을 요청하면 지워진다.

728x90