Lon*_*han 30 javascript firebase
我已升级到新API,但不知道如何在两个单独的文件中初始化Firebase引用:
/* CASE 1 */
// 1st file
var config = {/* ... */};
firebase.initializeApp(config);
var rootRef = firebase.database().ref();
// 2nd file - initialize again
var config = {/* ... */};
firebase.initializeApp(config);
var rootRef = firebase.database().ref();
Run Code Online (Sandbox Code Playgroud)
结果:bundle.js:535未捕获错误:名为"[DEFAULT]"的Firebase应用程序已存在.
/* CASE 2 */
// 1st file
var config = {/* ... */};
firebase.initializeApp(config);
var rootRef = firebase.database().ref();
// 2nd file - don't initialize
var rootRef = firebase.database().ref();
Run Code Online (Sandbox Code Playgroud)
结果:bundle.js:529未捕获错误:没有创建Firebase应用程序'[DEFAULT]' - 调用Firebase App.initializeApp().
在我刚刚调用的新API之前
var myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
Run Code Online (Sandbox Code Playgroud)
在每个文件中,它工作正常.
lom*_*maj 45
这是我遇到的问题,以及升级到新版本的Firebase.您可能需要初始化两个单独的firebase应用程序,如其他答案中所述,但我只是想在我的应用程序中的两个不同位置使用refs并且我得到了相同的错误.
您需要为此情况做的是为您的应用创建一个firebase模块,该模块仅初始化一次firebase,然后您导入或在应用中的其他地方需要它.
这很简单,这是我的:modules/firebase.js
import firebase from 'firebase';
var firebaseConfig = {
apiKey: "some-api-key",
authDomain: "some-app.firebaseapp.com",
databaseURL: "https://some-app.firebaseio.com",
storageBucket: "some-app.appspot.com",
};
var FbApp = firebase.initializeApp(firebaseConfig);
module.exports.FBApp = FbApp.database(); //this doesnt have to be database only
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序的其他地方您只需:
import FBApp from '/your/module/location'
var messagesRef = FBApp.ref("messages/");
Run Code Online (Sandbox Code Playgroud)
Jai*_*mez 28
您需要为不同的实例命名(应用为Firebase称之为); 默认情况下,您正在使用[DEFAULT]应用程序,因为这是最常见的用例,但是当您需要使用多个应用程序时,则必须在初始化时添加名称:
// Intialize the "[DEFAULT]" App
var mainApp = firebase.intializeApp({ ... });
// Intialize a "Secondary" App
var secondaryApp = firebase.initializeApp({ ... }, "Secondary");
...
mainApp.database().ref("path/to/data").set(value);
secondaryApp.database().ref("path/to/data").set(anotherValue);
Run Code Online (Sandbox Code Playgroud)
您可以在添加Firebase 的更新初始化多个应用部分中找到更多示例方案,并将其添加到JavaScript项目指南中.
如果您无法控制Firebase的实例化位置,则可以执行以下操作:
try {
let firApp = firebase.app(applicationName);
return firApp;
} catch (error) {
return firebase.initializeApp({
credential: firebase.credential.cert(firebaseCredentials),
databaseURL: firebaseUrl
}, applicationName);
}
Run Code Online (Sandbox Code Playgroud)
Firebase会尝试获取该应用程序,如果该应用程序不存在,则可以自由地对其进行初始化。
| 归档时间: |
|
| 查看次数: |
30496 次 |
| 最近记录: |