2016-08-21 5 views
2

Ich habe ein sehr verwirrendes Problem. Ich habe Firebase mit React Native verwendet, das hat gut funktioniert, aber in letzter Zeit manchmal, wenn ich die App starten verbindet es, manchmal wenn ich es nicht tut ..Firebase manchmal verbinden, manchmal nicht verbinden (React Native)

Ich denke, es könnte mit der Art und Weise ich zu tun haben Verbindung zur Datenbank herstellen. Ich mache es in einer einfachen Javascript-Datei, die ich dann in der ganzen App auf ihren verschiedenen Ansichten aufrufen, wenn ich auf eine Datenbank verweisen möchte. Ich war mir nicht sicher, wie ich das machen sollte, ohne ständig zu reinitialisieren, also dachte ich, ich könnte es einmal machen und es in einer Variable speichern.

Hier ist der Code, den ich zu initialisieren verwenden .. nichts special..exactly, was die (natürlich entfernt, um die Schlüsseldatei Zeug zum Zwecke dieses Beitrags) zu verwenden sagen:

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 
} 

schiebe ich ein Objekt nur um meine Verbindung zu überprüfen, wird sie manchmal zur Datenbank hinzugefügt. Manchmal geht es nicht. Ich mache auch Datenbankreferenzen in der ganzen App. Welche manchmal funktionieren und manchmal nicht

Ich vermute, das ist etwas zu tun, mit nativen reagieren oder die Art, wie ich versuche, das gleiche Objekt in mehreren Dateien verwenden .. aber ich bin nicht wirklich sicher, was zu tun ist.

Danke für die Hilfe!

Antwort

3

Ich habe das gleiche Problem, es scheint, dass die Konfiguration nicht auf der Modulebene behandelt werden sollte, sondern stattdessen ausgeführt werden, sobald die App bereit ist. Sie können die Konfiguration in einer Methode festlegen, die Sie später manuell auslösen. Da es sehr mühsam sein kann zu erinnern, diese Methode zu nennen, kam ich mit einem wenig Wrapper zum database ref, um automatisch die App zum ersten Mal init wir einen Aufruf an den Konstruktor firebase.database() gemacht:

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() 
} 

dann in was auch immer-Datei-you-want.js

import { getDatabase } from './database' 

getDatabase().ref('...') // etc. 
+0

mir das Leben gerettet! –

Verwandte Themen