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을 요청하면 지워진다.