2016-05-26 5 views
2

私は最近、古いFirebase APIから新しいGoogle Firebaseに移行し始めました。私は、サンプルコードを使用してSDKを初期化(と思う)が正常にGetting Started Guideを踏襲し、管理者権限アカウントを作成し、JSONファイルを生成することができただけでなく、している:FirebaseのJavaサーバが情報をデータベースにプッシュしない

FirebaseOptions options = new FirebaseOptions.Builder() 
       .setServiceAccount(new FileInputStream("C:\\FileStructure\\Test Dev Project-59ee6eb5842a.json")) 
       .setDatabaseUrl("https://test-dev-project-96fd5.firebaseio.com/") 
       .build(); 

     FirebaseApp.initializeApp(options); 

私の問題は、すべての情報をプッシュしています私のデータベースに。私はアプリケーション(NetBeansで)を実行し、問題なく実行します。

// Create a database based on the initialized Firebase App 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     // Reference to the root of the database created. 
     DatabaseReference ref = database.getReference(); 
     // Create a child to the root node 
     DatabaseReference dataRef = ref.child("Hello World"); 
     dataRef.setValue("I'm writing data", new DatabaseReference.CompletionListener() { 
      @Override 
      public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
       if (databaseError != null) { 
        System.out.println("Data could not be saved " + databaseError.getMessage()); 
       } else { 
        System.out.println("Data saved successfully."); 
       } 
      } 
     }); 

それはコードがインスタンス化されたアプリケーションに基づいてデータベースの参照を描画し、のsetValue()、プッシュ()、更新()、およびトランザクションデータが戻ってデータベースにデータをプッシュするというのが私の理解です。

データdirectly from the new API reference page on saving dataを実際にコピーして貼り付けても、データはまだコンソールに表示されません。私はまた、私のコンソールは、私が正しくまたは間違ってデータをプッシュしたことを確認していないことを追加することもできます。

小さなものを忘れているような気がします。自分の参照を正しく作成しているかどうかはわかりません。

私は実際にはスタックオーバーフローについて実際に投稿しているので新しくなっていますので、重要なデータを残しておくか、正しく投稿してください。

お世話になりました。

+2

これの最も一般的な原因は、Firebaseクライアントがデータをデータベースに送信する前にJavaプログラムが終了することです。プログラムの終わりに 'Thread.sleep(10000)'を追加することで、これが原因であるかどうかを簡単に確認できます。 –

+0

アドバイスをいただきありがとうございます。やってみます! 私は睡眠を引き起こすことは悪いコーディング練習と考えられていましたが、この場合は例外を作らなければならないのでしょうか? –

+0

あなたは正しいと思われます。 Javaプログラムは情報をデータベースに適切にプッシュする時間を与えません。 私の考えは、Thread.sleep(10000)の必要性を排除するためです。代わりに、プッシュが成功したときにユーザーにアドバイスするJavaFXアプリケーションを作成することができます。 –

答えて

2

Frank van Puffelenから作業応答:

本の最も一般的な原因はFirebaseクライアントがデータベースにデータを送信した前に、あなたのJavaプログラムが終了していることです。これが原因であるかどうかは、プログラムの最後にThread.sleep(10000)を追加することで簡単に確認できます。

しかし、このスレッドは重複しています。元の質問はhereです。この質問は移行後のGoogle所有のFirebaseに関するものですが、解決方法は同じです。

関連する問題