2017-10-04 11 views
2

J'ai essayé les deux et tout le travail. Quelle est la différence?Quel est le but de l'appel de firebase.app() dans la base de données native firebase?

import firebase from 'react-native-firebase'; 

const defaultApp = firebase.app(); 

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

vs

import firebase from 'react-native-firebase'; 

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

Répondre

3

Les deux approches sont équivalentes. La seconde repose simplement sur des valeurs par défaut codées en dur, tandis que la première est plus explicite. Cela devient particulièrement évident si vous voulez (par exemple) accéder aux bases de données dans une seule application.

Notre documentation explains this rather well, donc je vais citer de là:

Dans la plupart des cas, vous ne devez initialiser une seule application par défaut. Vous pouvez accéder à des services hors de cette application de deux manières équivalentes:

// 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(); 

Certains cas d'utilisation vous demandent de créer des applications multiples en même temps. Par exemple, vous pouvez lire les données de la base de données en temps réel d'un projet Firebase et stocker des fichiers dans un autre projet. Ou vous pouvez vouloir authentifier une application tout en ayant une autre application non authentifiée. Le SDK Firebase vous permet de créer plusieurs applications en même temps, chacune avec ses propres informations de configuration.

// 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(); 

Note: Chaque instance de l'application a ses propres options de configuration et de l'état d'authentification.

+2

a mis le doigt sur la tête là-bas, juste pour ajouter à cela, dans React-native firebase l'application par défaut est pré-initialisées sur le comptoir natif partie Firebase sdk de (ios et android) par les services de google JSON/plist files, donc initialializeApp n'est pas requis pour l'application par défaut - il vous permettra quand même de l'appeler, mais en interne il ignore toutes les options passées et retournera l'application déjà initialisée (avec un avertissement de désapprobation). Cela va changer dans une future version pour lancer une erreur 'default app déjà initialisée' - même chose que le web sdk. Disclaimer: Auteur de RNFirebase – Salakar