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