[typescript] 타입스크립트와 GCP의 Cloud Firestore 데이터 모델링 방법

GCP의 Cloud Firestore는 NoSQL 데이터베이스로, JSON과 유사한 데이터 구조를 지원하며, 관계형 데이터베이스와는 다른 데이터 모델을 갖고 있습니다. 이번 글에서는 타입스크립트로 Cloud Firestore 데이터 모델링을 하는 방법에 대해 살펴보겠습니다.

Firestore 데이터 모델링을 위한 타입스크립트 인터페이스

우선, Firestore의 데이터 모델을 타입스크립트로 표현하기 위해 각각의 컬렉션과 문서에 대한 타입을 정의해야 합니다. 이를 위해 타입스크립트의 인터페이스를 활용합니다.

// 예시: users 컬렉션의 문서 타입 정의
interface User {
  id: string;
  name: string;
  email: string;
  createdAt: Date;
  // 추가적인 필드 정의
}

위의 예시에서 User 인터페이스는 users 컬렉션의 문서에 저장될 데이터의 형태를 정의합니다.

Firestore 데이터 읽기 및 쓰기 예시

타입스크립트로 정의한 데이터 모델을 활용하여 Firestore 데이터를 읽고 쓰는 방법을 살펴보겠습니다.

데이터 쓰기

import { doc, setDoc } from 'firebase/firestore';
import { db } from './firebase'; // Firebase 액세스

const addUser = async (userData: User) => {
  await setDoc(doc(db, 'users', userData.id), userData);
};

위의 예시에서 addUser 함수는 users 컬렉션에 새로운 사용자 데이터를 추가하는 예시입니다.

데이터 읽기

import { collection, getDocs } from 'firebase/firestore';
import { db } from './firebase'; // Firebase 액세스

const getUsers = async () => {
  const querySnapshot = await getDocs(collection(db, 'users'));
  const users: User[] = [];
  querySnapshot.forEach((doc) => {
    users.push(doc.data() as User);
  });
  return users;
};

위의 예시에서 getUsers 함수는 users 컬렉션의 모든 사용자 데이터를 읽어오는 예시입니다.

마치며

이러한 방식으로 타입스크립트를 사용하여 Firestore 데이터 모델링을 간편하게 수행할 수 있습니다. 타입스크립트를 통한 데이터 모델 정의는 코드의 가독성을 향상시키고, 개발 과정에서의 오류를 줄일 수 있는 장점을 제공합니다.

위의 예시는 Firestore Web 버전 9용 Firestore 쿼리를 기반으로 작성되었습니다.

더 자세한 정보는 GCP의 Cloud Firestore 문서를 참고하시기 바랍니다.