2016-05-22 10 views
7

私はnodejsを初めて使っていますが、Firebase Version 3.0.2にはすでに動作しているjsクライアントプログラムがあります。 jsクライアントでは不可能な単純なことを行うためのサーバーが必要です。新しいFirebaseを持つNodejsアプリケーションはデータベース項目を取得しません

nodejsでこの基本的なことを試しても、何も起こりません。データベース内のデータは決して取得されず、ノードサーバープログラムはエラーなしで引き続き実行されます。サーバープログラム(server.js)は次のとおりです。

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

データベースにデータがロードされていますが、これはルートを調べようとしています。コンソールでデータベースにアイテムを追加すると、何も起こりません。より具体的なref()値は効果がありません。

私はノードバージョンv4.4.4を使用しています。このプログラムは、 "node server.js"を含むコマンドライン(MBP/OSX上)で呼び出されます。

私は間違っていることを理解しようと時間を費やしました。おそらく何かばかげたことです!事前に助けてくれてありがとう。

+0

(非同期の) 'on()'がサーバから値を取得する前に、あなたのプログラムは単に終了している可能性があります。コールバックは決して呼び出されません。例えば、このプロセスを生きたままにする方法についてのこの回答を参照してください:http://stackoverflow.com/questions/23622051/how-to-forcibly-keep-a-node-js-process-from-terminating –

+0

同じ問題を抱えているImまた、クイックスタートプロジェクトhttps://github.com/firebase/quickstart-nodejs/tree/master/databaseを使用してテストしましたが、まだ運がありません。私はそれが彼らの最後のバグだと思う。 – garrettmac

+0

@FrankvanPuffelen:プロセスは決して終了しない - データベースイベントを待っているようだが、決してそれを取得しない。 – DavidG

答えて

8

修正済み!不可欠である

  1. を追加しましたデバッグ、:

    firebase.database.enableLogging(true)

  2. 無効なトークンがあったことを見て、継続的に再試行する再接続/切断されていました。

    P:0:サーバから:{ "R":2、 "B":{ "S": "invalid_token"、 "D": "アクセスが拒否されました。"}}

    ようなログの行

    (注:ログがなければ、これは完全に静かでした!)

  3. サービスアカウントが正しく作成されていないことが判明しました。あなたは最初にサービスの条件を確認する必要があります!これを行うには:https://console.cloud.google.com/

  4. 新しいサービスアカウントを再作成して、最後に動作します。