我有一个非常令人困惑的问题。我一直在使用Firebase和React Native,它一直运行良好,但最近有时当我启动它连接的应用程序时,有时当我这样做时它没有...
我认为这可能与我连接数据库的方式有关。我在一个简单的javascript文件中执行此操作,然后当我想引用数据库时,我会在整个应用程序中调用其不同的视图。如果不经常重新启动,我真的不确定如何做到这一点,所以我想我可以做一次并将其存储在一个变量中。
这是我用来初始化的代码..没有什么特别的......究竟是什么意思使用(显然为了这个帖子删除了密钥文件的东西):
console.log("Global Variable File!")
console.log("This is also where all of our intialization stuff is")
//Connection Stuff
const firebase = require("firebase");
const firebaseConfig = {
apiKey: "",
authDomain: "",
databaseURL: "",
storageBucket: "",
};
const firebaseObject = firebase.initializeApp(firebaseConfig);
console.log("===Firebase Intialized===");
//TODO - Remove me
firebaseObject.database().ref().child('testConnect').push({ title: "Summer2016" });
module.exports = {
firebaseObject
}
我推送一个对象只是为了验证我的连接,有时它会被添加到数据库中。有时它不会。我还在整个应用程序中进行数据库引用。有时工作,有时不工作
我怀疑这与本机反应或我试图在多个文件中使用相同对象的方式有关...但我不确定该怎么做。
感谢您的帮助!
答案 0 :(得分:3)
我遇到同样的问题,似乎不应该在模块级别处理配置,而是在应用程序准备就绪后执行。您可以在稍后手动触发的方法中设置配置。因为记住调用这个方法可能很乏味,所以我想出了database
引用的一个小包装器,以便在我们第一次调用firebase.database()
构造函数时自动启动应用程序:
<强> database.js 强>
import * as Firebase from 'firebase'
let HAS_INITIALIZED = false
const initFirebase = () => {
if (!HAS_INITIALIZED) {
const config = {
apiKey: "**************",
authDomain: "************",
databaseURL: "*********",
storageBucket: "*********",
}
Firebase.database.enableLogging(true)
Firebase.initializeApp(config)
HAS_INITIALIZED = true
}
}
export const getDatabase = () => {
initFirebase()
return Firebase.database()
}
然后,在 whatever-file-you-want.js
中import { getDatabase } from './database'
getDatabase().ref('...') // etc.