[英]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.