javascript - Vue 和 Firebase RTDB 连接
问题描述
我遵循了几个不同的教程,阅读了许多关于 SO 的帖子,但我的 firebase RTDB 仍然无法连接。它甚至不会抛出任何错误。
此时我在db/database.js中的文件看起来像这样(我从连接数据中剥离了它):
const firebaseConfig = {
apiKey: "key",
authDomain: "",
databaseURL: "https://database_name.europe-west1.firebasedatabase.app",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: ""
};
firebase.initializeApp(firebaseConfig);
const firebaseDb = firebase.database()
export default firebaseDb
我用来调用store/index.js中的数据库引用的方法
dbReadSettings() {
console.log("I'm here");
let settings = firebaseDb.ref('userSettings/', function(error) { console.log(error) });
settings.on('value', (snapshot) => {
const data = snapshot.val();
console.log(data)
}, function(error) {
console.log(error) })
}
结果是没有 -控制台注销我在这里”然后没有别的(我尝试了许多不同的方法)。我检查了路径和文档,但它根本没有连接。有什么帮助吗?
解决方案
您拥有的第一个回调是不需要的,实际上永远不会被调用。由于您将侦听器附加到该回调中,因此永远不会附加侦听器。
您可以通过添加额外的日志行轻松检查这一点:
console.log("I'm here");
let settings = firebaseDb.ref('userSettings/', function(error) { console.log(error) });
console.log("Now I'm here");
settings.on('value', (snapshot) => {
const data = snapshot.val();
console.log(data)
}, function(error) {
console.log(error);
});
})
虽然你会看到:
我在这
你永远不会看到:
我现在就在这
要解决此问题,请删除无关的回调并在创建引用后立即附加侦听器(这不是异步操作):
console.log("I'm here");
let settings = firebaseDb.ref('userSettings/')console.log(error) });
settings.on('value', (snapshot) => {
const data = snapshot.val();
console.log(data)
}, function(error) {
console.log(error);
});
推荐阅读
- python - 如何从仅包含某些值的数据框中提取行
- python - PyTorch:将除前k之外的向量的所有元素归零?
- android - 如何在android上的edittext上设置最大长度消息
- java - 如何在不使用 Java 库中的 CyclicBarrier 的情况下制作自己的 CyclicBarrier
- c# - SqlDataReader 只能检查(Null 或非 null 值)之一
- firebase - 获取下拉菜单选择的值并将其发送到 Firebase ( Flutter )
- php - 基于国家代码的 WooCommerce 动态产品类别信息
- python - 获取变量名数据类型和值的函数
- r - 使用具有重复测量数据的 R 的 pivot_wider 或类似函数
- python - pybind 库在导入时更改链接到当前 python 进程的 .so 文件