2016-05-22 10 views
7

Sono nuovo a nodejs, ma ho già un programma client js funzionante, in Firebase Versione 3.0.2. Risulta che ho bisogno di un server per fare alcune cose semplici non possibili in un client js.L'app Nodejs con il nuovo Firebase non recupera gli elementi del database

Quando si tenta questa cosa di base in nodejs, non accade nulla: i dati nel database non vengono mai recuperati e il programma del server di nodi continua a essere eseguito senza errori. Il programma server (server.js) è il seguente:

var firebase = require("firebase"); 

var myApp =firebase.initializeApp({ 
    serviceAccount: "xxx/xxx.json", 
    databaseURL: "https://xxx.firebaseio.com" 
}); 


firebase.database().ref().on('value', function(snapshot) { 
    console.log("urls value changed"); // NEVER GETS HERE 
    console.log(snapshot.val()); 
}); 

Il database è caricato con dati e questo sta provando a guardare la radice. Quando aggiungo elementi al database tramite la console, non succede ancora nulla. I valori ref() più specifici non hanno alcun effetto.

Sto usando la versione del nodo v4.4.4. Il programma è invocato sulla riga di comando (su un MBP/OSX) con "node server.js".

Ho passato ore a cercare di capire cosa sto facendo male, probabilmente qualcosa di stupido! Grazie per l'aiuto in anticipo.

+0

Molto probabilmente il programma sta semplicemente uscendo prima che (in modo asincrono) 'on()' ottenga il valore dal server. Quindi la tua callback non viene mai invocata. Vedi ad esempio questa risposta su come mantenere vivo il processo: http://stackoverflow.com/questions/23622051/how-to-forcibly-keep-a-node-js-process-from-terminating –

+0

Im avendo lo stesso problema , Ho anche testato utilizzando il loro progetto quickstart https://github.com/firebase/quickstart-nodejs/tree/master/database e ancora senza fortuna. Penso che sia un bug alla loro fine – garrettmac

+0

@FrankvanPuffelen: il processo non esce mai - sembra che stia aspettando l'evento del database, ma non lo ottiene mai. – DavidG

risposta

8

Riparato!

  1. Aggiunto il debug, che è essenziale:

    firebase.database.enableLogging(true)

  2. visto che c'era un token non valido, ed è stato continuamente scollegato/ricollegato per riprovare. Linee nel registro come:

    p: 0: dal server: { "r": 2, "b": { "s": "invalid_token", "d": "Accesso negato."}}

    (NOTA: senza la registrazione, questo era totalmente silenzioso!).

  3. Si scopre che l'account di servizio non è stato creato correttamente! Devi prima accettare i termini di servizio! Per fare ciò: vai a https://console.cloud.google.com/

  4. Ricreato un nuovo account di servizio e collegato - e finalmente funziona!

Problemi correlati