2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

前回記事の続きです。
FirestoreのCRUD処理を記載します。

▪️シリーズ
TypeScript×Firebase(Step1:プロジェクト作成~データ取得まで)
TypeScript×Firebase(Step2:CRUD処理)←いまここ
TypeScript×Firebase(Step3:ディレクトリ修正、リファクタリング)

ソースコード

ディレクトリ構成
~/develop/firebase_typescript$ tree src   
src
├── firestore.ts
└── users
    ├── create.ts
    ├── delete.ts
    ├── read.ts
    └── update.ts

2 directories, 5 files
src/users/create.ts
import { addDoc, collection, doc, writeBatch } from 'firebase/firestore';
import { app, db } from '../firestore';
import { deleteApp } from 'firebase/app';

// 新しいユーザーを作成する
async function createNewUser() {
  try {
    // `users` コレクションに新しいドキュメントを追加
    const docRef = await addDoc(collection(db, 'users'), {
      name: 'New User',
      email: 'newuser@example.com',
    });

    console.log('ドキュメント作成成功!ドキュメントID: ', docRef.id);
  } catch (e) {
    console.error('ドキュメント作成エラー: ', e);
  } finally {
    // 処理が完了したらFirebaseの接続を閉じる
    await deleteApp(app);
  }
}
src/users/read.ts
import { deleteApp } from 'firebase/app';
import { collection, doc, getDoc, getDocs } from 'firebase/firestore';
import { db, app } from '../firestore';

// コレクションの全ドキュメントを取得する
async function getUsers() {
  const querySnapshot = await getDocs(collection(db, 'users'));
  querySnapshot.forEach((doc) => {
    console.log(`${doc.id} => ${JSON.stringify(doc.data())}`);
  });

  // 処理が完了したらFirebaseの接続を閉じる
  await deleteApp(app);
}

// コレクション内の対象ドキュメントを取得する
async function getUser(docId: string) {
  const docRef = doc(db, 'users', docId);
  const docSnap = await getDoc(docRef);

  if (docSnap.exists()) {
    console.log('Document data:', docSnap.data());
  } else {
    console.log('No such document!');
  }
  // 処理が完了したらFirebaseの接続を閉じる
  await deleteApp(app);
}

src/users/update.ts
import { doc, updateDoc } from 'firebase/firestore';
import { app, db } from '../firestore';
import { deleteApp } from 'firebase/app';

async function updateUser(docId: string) {
  const docRef = doc(db, 'users', docId);

  try {
    await updateDoc(docRef, {
      name: '更新されたユーザー名',
    });

    console.log('ドキュメント更新成功!');
  } catch (e) {
    console.error('ドキュメント更新エラー: ', e);
  } finally {
    // 処理が完了したらFirebaseの接続を閉じる
    await deleteApp(app);
  }
}

const docId = 'KZc9Ko0wSGVUHOqOO3Dx'; // 更新したいドキュメントのID
updateUser(docId);

src/users/delete.ts
import { doc, deleteDoc } from 'firebase/firestore';
import { app, db } from '../firestore';
import { deleteApp } from 'firebase/app';

async function deleteUser(docId: string) {
  const docRef = doc(db, 'users', docId);

  try {
    await deleteDoc(docRef);
    console.log('ドキュメント削除成功!');
  } catch (e) {
    console.error('ドキュメント削除エラー: ', e);
  } finally {
    // 処理が完了したらFirebaseの接続を閉じる
    await deleteApp(app);
  }
}
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?