[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 공식 문서
이상으로 포스트를 마치겠습니다. 감사합니다!