2017-02-04 17 views
0
FirebaseOptions options = new FirebaseOptions.Builder() 
       .setCredential(FirebaseCredentials.applicationDefault()) 
       .setDatabaseUrl("https://mkastrive.firebaseio.com") 
       .build(); 
     FirebaseApp defaultApp = FirebaseApp.initializeApp(options); 
     DatabaseReference ref = defaultDatabase 
       .getInstance() 
       .getReference("users"); 

     ref.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       System.out.println("in onDataChange"); 
       System.out.println(dataSnapshot.getValue()); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       System.out.println("in onCancelled"); 
       System.out.println(databaseError.toString()); 
      } 
     }); 

私はAndroidのGoogle Cloud Moduleで上記を行っています。 System.out.println("usersRef.push(): " + usersRef.push()); // Working しかし、私はaddListenerForSingleValueEventのための何も表示されませんので、私のFirebaseの初期化が成功したと思います。ログにもエラーや警告は表示されません。私のデータベースルールは誰でもデータを読み書きできるように設定されています。Google App EngineのFirebase admin SDKセットアップ

アップデート1:のsetValue()を使用しての提案によると、私はfirebaseのドキュメントに例を試してみました:

DatabaseReference usersRef1 = ref.child("users"); 

Map<String, User> users = new HashMap<String, User>(); 
users.put("alanisawesome", new User("June 23, 1912", "Alan Turing")); 
users.put("gracehop", new User("December 9, 1906", "Grace Hopper")); 

usersRef1.setValue(users); 

しかし、これはどちらかのデータベースに挿入していない、ともエラーされていません。ログは空白です。

アップデート2: いくつかのログ

FirebaseApp defaultApp = FirebaseApp.initializeApp(options); 
this.defaultDatabase = FirebaseDatabase.getInstance().getReference(); 
defaultDatabase.child("users").getPath(): https://mkastrive.firebaseio.com 
defaultDatabase.child("users").getPath(): /users 

答えて

0

push()をコールすると、データベースに変更を加えることはしません。これはおそらくリスナーが呼び出されていない理由です。 push()は、DatabaseReferenceを返すだけで、その参照によって表される場所で変更を行うことができます。その場所のキー(一意のプッシュID)は、クライアント上で完全に生成されます。

実際にをDatabaseReferenceに返すと、push()が返されます。

関連する問題