2017-10-04 10 views
2

私は両方を試してみました。違いは何ですか?反応するネイティブfirebaseでfirebase.app()を呼び出す目的は何ですか?

import firebase from 'react-native-firebase'; 

const defaultApp = firebase.app(); 

defaultApp.database().ref('foobar').once('value', (snapshot) => { 
    // snapshot from default app 
}); 

import firebase from 'react-native-firebase'; 

firebase.database().ref('foobar').once('value', (snapshot) => { 
    // snapshot from default app 
}); 

答えて

3

対の2つの方法が同等です。第2のものはハードコード化されたデフォルトに依存していますが、第1のものはもっと明示的です。これは、単一のアプリケーションでデータベースにアクセスするなどの場合に特に顕著になります。

当社documentation explains this rather wellので、私はそこから引用されます:

ほとんどの場合、あなたは一つだけ、デフォルトのアプリを初期化する必要があります。あなたはそのアプリケーションから2つの同等の方法でサービスにアクセスできます:

// Initialize the default app 
var defaultApp = firebase.initializeApp(defaultAppConfig); 

console.log(defaultApp.name); // "[DEFAULT]" 

// You can retrieve services via the defaultApp variable... 
var defaultStorage = defaultApp.storage(); 
var defaultDatabase = defaultApp.database(); 

// ... or you can use the equivalent shorthand notation 
defaultStorage = firebase.storage(); 
defaultDatabase = firebase.database(); 

複数のアプリケーションを同時に作成する必要があるケースもあります。たとえば、あるFirebaseプロジェクトのRealtime Databaseからデータを読み込んで、ファイルを別のプロジェクトに保存することができます。または、あるアプリを認証し、別のアプリを認証されないようにすることもできます。 Firebase SDKを使用すると、同時に複数のアプリを作成し、それぞれ独自の設定情報を作成することができます。

// Initialize the default app 
firebase.initializeApp(defaultAppConfig); 

// Initialize another app with a different config 
var otherApp = firebase.initializeApp(otherAppConfig, "other"); 

console.log(firebase.app().name); // "[DEFAULT]" 
console.log(otherApp.name);  // "other" 

// Use the shorthand notation to retrieve the default app's services 
var defaultStorage = firebase.storage(); 
var defaultDatabase = firebase.database(); 

// Use the otherApp variable to retrieve the other app's services 
var otherStorage = otherApp.storage(); 
var otherDatabase = otherApp.database(); 

注:各アプリケーションインスタンスには、独自の設定オプションと認証状態があります。

+2

は、GoogleサービスのJSON経由のSDKの(IOS&アンドロイド)firebase反応-ネイティブfirebaseデフォルトアプリがネイティブのカウンターの上に事前に初期化される部分には、単にこれに追加して、そこに頭の上に釘を打ちます/ plistファイルであるため、initialializeAppはデフォルトのアプリケーションでは必要ありません。それでも呼び出すことはできますが、内部的には渡されたすべてのオプションが無視され、既に初期化されているアプリケーション(廃止予定の警告付き)が返されます。これは、将来のバージョンで、デフォルトのアプリが既に初期化されたエラーをスローするように変更されます - ウェブSDKと同じです。免責事項:RNFirebaseの著者 – Salakar

関連する問題