簡體   English   中英

實時數據庫訂閱不工作:Firebase

[英]Realtime Database Subscription not working: Firebase

我有一個設置來監聽 firebase 數據庫中的實時變化:

這是路徑的樣子: Path = funfuse/users/connected-users/AfYXmJroEKQwnhiFXXXXXiyblti22

這就是我的數據庫的結構:

在此處輸入圖像描述

當我嘗試向最后一個子項(即connected-users )添加條目時,它會在數據庫中更新,但即使我的應用程序在我的 web 瀏覽器上運行,我也沒有收到任何更新日志消息:

 useEffect(() => {
    if (isLoggedIn && firebaseToken !== '') {
      const path = `${rdb_paths.funfuse_connected_users}/${user?.uid ?? ''}`;
      const connectionsRef = ref(rdb, path);
      console.log('Path = ', path);

      onValue(connectionsRef, (snapshot) => {
        console.log('Values = ', snapshot.val());
      });
      return () => {
        console.log('Switching off listening');
        off(connectionsRef);
      };
    }
  }, [firebaseToken, isLoggedIn, user?.uid]);

我在這里做錯了什么嗎? 為什么我無法獲取更新。 這是我的安全規則:

{
  "rules": {
    "funfuse": {
      "users": {
        "requests-users": {
          "$uid": {
            ".read":"$uid === auth.uid && auth.token.email_verified === true",
            ".write":"$uid === auth.uid && auth.token.email_verified === true"
          }
        },
        "requested-users": {
          "$uid": {
            ".read":"$uid === auth.uid && auth.token.email_verified === true",
            ".write":"$uid === auth.uid && auth.token.email_verified === true"
          }
        },
       "connected-users": {
        "$uid": {
          ".read":"$uid === auth.uid && auth.token.email_verified === true",
          ".write":"$uid === auth.uid && auth.token.email_verified === true"
        }
      } 
      }
    }
  }
}

我確實運行了一個模擬來讀取和寫入數據,它運行良好。 我是否需要添加額外的規則來監聽數據更新?

我意識到問題是因為它使用default數據庫 Url,因為我沒有在我的配置 object 中傳遞它:

const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_FB_CLIENT_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_FB_CLIENT_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_FB_CLIENT_PROJECT_ID,
  storageBucket: process.env.NEXT_PUBLIC_FB_CLIENT_STORAGE_BUCKET,
  messagingSenderId: process.env.NEXT_PUBLIC_FB_CLIENT_MESSAGING_SENDER_ID,
  appId: process.env.NEXT_PUBLIC_FB_CLIENT_APP_ID,
  measurementId: process.env.NEXT_PUBLIC_FB_CLIENT_MEASUREMENT_ID,
};

將以上內容更改為:

const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_FB_CLIENT_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_FB_CLIENT_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_FB_CLIENT_PROJECT_ID,
  storageBucket: process.env.NEXT_PUBLIC_FB_CLIENT_STORAGE_BUCKET,
  messagingSenderId: process.env.NEXT_PUBLIC_FB_CLIENT_MESSAGING_SENDER_ID,
  appId: process.env.NEXT_PUBLIC_FB_CLIENT_APP_ID,
  measurementId: process.env.NEXT_PUBLIC_FB_CLIENT_MEASUREMENT_ID,
  databaseURL: process.env.NEXT_PUBLIC_FB_CLIENT_DB_URL,
};

為我解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM