ReactでFIREBASEのCRUD操作する

FirebaseのFirestoreのCRUD操作をReactで行います。つまりCreate(addDoc)、Read(getDocs)、Update(updateDoc)、Delete(deleteDoc)です。お作法的なとこの備忘録でざっくり記載してます。setDocやwhere句、エラーハンドリングの説明なしです。

CREATE

<form onSubmit={onSubmit}>
const onSubmit = async (event) => {
  event.preventDefault();
  const { name, email } = event.target.elements;
  const ref = collection(db, 'users');
  const res = await addDoc(ref, {
    name: name.value,
    email: email.value,
  });
  console.log(res);
};

Formタグでサブミット時に自分のメソッドを呼ぶようにします。

非同期なのでasync/awaitで処理します。画面遷移しないようpreventDefaultします。

フォームのinputタグ要素からnameとemailを取り出します。

CollectionでDBの何を処理対象にするか記載します。

AddDocでDBに対して何を追加するか記載します。

READ

import { useState, useEffect } from 'react';
import { db } from '../firebase';
import { collection } from 'firebase/firestore';
const [users, setUsers] = useState([]);
useEffect(() => {
  const ref = collection(db, 'users');
  getDocs(ref).then((snapshot) => {
    setUsers(snapshot.docs.map((doc) => doc.data()));
  });
}, []);

Stateで状態保存できるように準備しておきます。

CollectionでDBの何を取得するかを指定します。

GetDocsで取得を実行します。結果はsnapshotに入ります。

mapでループすると一件がdocに入ります。それのdata()を取り出してStateに保存してます。

UPDATE

const changeName = async (id) => {
  const ref = doc(db, 'users', id);
  await updateDoc(ref, {
    name: “NONE”,
  });
};

DocでDBの何を操作するか設定します。USERSコレクションの特定のIDのドキュメントを指定してます。

UpdateDocでドキュメントに対してName箇所をNONEに更新します。

DELETE

const deleteUser = async (id) => {
  const ref = doc(db, 'users', id);
  await deleteDoc(ref);
};

DocでDBの何を操作するか設定します。USERSコレクションの特定のIDのドキュメントを指定してます。

DeleteDocで対象を削除します。

コメントを残す