[typescript] 타입스크립트와 GCP의 Cloud Firestore 트랜잭션 처리 방법

GCP(Google Cloud Platform)의 Cloud Firestore는 NoSQL 데이터베이스로, 트랜잭션(transaction) 처리 기능을 제공하여 여러 문서 간의 일관된 상태를 유지할 수 있습니다. 이번 포스트에서는 타입스크립트(TypeScript)를 사용하여 Cloud Firestore의 트랜잭션 처리 방법에 대해 살펴보겠습니다.

1. Cloud Firestore 접속 설정

먼저, Node.js 프로젝트에 @google-cloud/firestore 패키지를 추가하고, 서비스 계정 키를 사용하여 Cloud Firestore에 접속합니다.

import * as admin from 'firebase-admin';

const serviceAccount = require('./path/to/serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://your-project-id.firebaseio.com'
});

const db = admin.firestore();

2. 트랜잭션 처리

Cloud Firestore에서 트랜잭션 처리를 위해서는 runTransaction 메서드를 사용합니다. 아래는 예시 코드입니다.

async function updateDocumentInTransaction(docRef: FirebaseFirestore.DocumentReference, newData: any) {
  await db.runTransaction(async (transaction) => {
    const docSnapshot = await transaction.get(docRef);
    if (docSnapshot.exists) {
      transaction.update(docRef, newData);
    }
  });
}

위 코드는 updateDocumentInTransaction 함수를 정의하여, 해당 함수를 호출하면 트랜잭션 내에서 문서를 업데이트합니다.

3. 에러 처리

트랜잭션 내에서 에러가 발생할 수 있으므로, 에러 처리를 해주어야 합니다.

async function updateDocumentInTransaction(docRef: FirebaseFirestore.DocumentReference, newData: any) {
  try {
    await db.runTransaction(async (transaction) => {
      const docSnapshot = await transaction.get(docRef);
      if (docSnapshot.exists) {
        transaction.update(docRef, newData);
      }
    });
  } catch (error) {
    console.error('트랜잭션 처리 중 에러 발생:', error);
  }
}

요약

이렇게 타입스크립트GCP의 Cloud Firestore를 함께 사용하여 트랜잭션 처리를 수행하는 방법에 대해 알아보았습니다. 트랜잭션은 문서 간의 일관성을 유지하는 데 유용하며, 에러 처리를 적절히 수행하여 안정적인 애플리케이션을 개발할 수 있습니다.

참고 자료: GCP 공식 문서

이상으로 포스트를 마치겠습니다. 감사합니다!