私は最近、古い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を実際にコピーして貼り付けても、データはまだコンソールに表示されません。私はまた、私のコンソールは、私が正しくまたは間違ってデータをプッシュしたことを確認していないことを追加することもできます。
小さなものを忘れているような気がします。自分の参照を正しく作成しているかどうかはわかりません。
私は実際にはスタックオーバーフローについて実際に投稿しているので新しくなっていますので、重要なデータを残しておくか、正しく投稿してください。
お世話になりました。
これの最も一般的な原因は、Firebaseクライアントがデータをデータベースに送信する前にJavaプログラムが終了することです。プログラムの終わりに 'Thread.sleep(10000)'を追加することで、これが原因であるかどうかを簡単に確認できます。 –
アドバイスをいただきありがとうございます。やってみます! 私は睡眠を引き起こすことは悪いコーディング練習と考えられていましたが、この場合は例外を作らなければならないのでしょうか? –
あなたは正しいと思われます。 Javaプログラムは情報をデータベースに適切にプッシュする時間を与えません。 私の考えは、Thread.sleep(10000)の必要性を排除するためです。代わりに、プッシュが成功したときにユーザーにアドバイスするJavaFXアプリケーションを作成することができます。 –