検索

ホームページ  >  に質問  >  本文

Firebase React Hook エラー: 未定義のプロパティを読み取れません (「_repo」を読み取っています)

次の JS でライブ データベースから userole を取得するフックを作成していますが、「未定義のプロパティを読み取れません ('_repo' を読み取ります)」というエラーが発生します。これが私のフックの外観です

import { useEffect, useState } from "react";
import { useRouter } から "next/router";
import { onAuthStateChanged } from "firebase/auth";
import { auth, db } from "../firebase";

const useAuth = () => {
  const [currentUser, setCurrentUser] = useState(null);
  const [ロール、セットロール] = useState(null);
  const ルーター = useRouter();

  useEffect(() => {
    const unsubscribe = onAuthStateChanged(auth, (user) => {
      if (ユーザー) {
        setCurrentUser(ユーザー);
        州
      

        
        ノード参照を許可します。
        if (user.role === "ユーザー") {
          nodeRef = ref(db, `users/${user.uid}/role`);
        } else if (user.role === "トレーナー") {
          nodeRef = ref(db, `trainers/${user.uid}/role`);
        } else if (user.role === "admin") {
          nodeRef = ref(db, `admins/${user.uid}/role`);
        } else if (user.role === "栄養士") {
          nodeRef = ref(db, `栄養士/${user.uid}/role`);
        }

        onValue(nodeRef, (スナップショット) => {
          const userRole = スナップショット.val();
          setRole(userRole);
        });
      } それ以外 {
        setCurrentUser(null);
        setRole(null);
        // ユーザーがログインしていない場合はログインページにリダイレクトします
        router.push("/login");
      }
    });

    
    return () => unsubscribe();
  }、[]);

  return {現在のユーザー、ロール};
};

デフォルトの useAuth をエクスポート;

これが私の Firebase 構成の様子です

// 必要な SDK から必要な機能をインポートします
import {initializeApp} から "firebase/app";
import { getAuth } から "firebase/auth";
import { getDatabase } から "firebase/database";
import { getStorage } から "firebase/storage";

const firebaseConfig = {
  
};

// Firebaseを初期化する
const app = 初期化App(firebaseConfig);
const auth = getAuth(app);
const db = getDatabase(app);
const storage = getStorage(app);

エクスポート { 認証、データベース、ストレージ };

これが私のデータベース構造です

- ユーザー
  - <ユーザーID>
    - displayName: "ユーザーの表示名"
    - 電子メール: 「ユーザーの電子メール アドレス」
    - 役割: 「ユーザー」
    -...
-トレーナー
  - <トレーナーID>
    - displayName: "トレーナーの表示名"
    - メール: 「トレーナーのメールアドレス」
    - 役割:「トレーナー」
    -...
-管理者
  - <admin_id>
    - displayName: "管理者の表示名"
    - 電子メール: 「管理者の電子メール アドレス」
    - 役割: 「管理者」
    -...
- 栄養士
  - <栄養士_id>
    - displayName: "栄養士の表示名"
    - メール: 「栄養士のメールアドレス」
    - 役割:「栄養士」
    - ...

データベースで何か間違ったことをしているのは明らかなので、これを試してみましたが、ドキュメントを読んでみましたが、まだ問題があります。私はfirebaseを初めて使用します。

P粉436688931P粉436688931254日前406

全員に返信(1)返信します

  • P粉207969787
  • キャンセル返事