2017-02-04 3 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()); 
      } 
     }); 

Я делаю это в облачном модуле Google на Android. Я думаю, что инициализация моей Firebase успешна, потому что System.out.println("usersRef.push(): " + usersRef.push()); // Working Но я ничего не вижу для addListenerForSingleValueEvent. Я также не вижу ошибок и предупреждений в журналах. Мои правила базы данных настроены для того, чтобы кто-либо мог читать/записывать данные.Firebase admin SDK setup в Google App engine

Update 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); 

Но это не вставляя в базе данных либо, а также без ошибок. Журнал пуст.

Update 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, который вы можете использовать для внесения изменений в местоположение, представленное этой ссылкой. Ключ этого местоположения (уникальный идентификатор push) генерируется полностью на клиенте.

Попытайтесь на самом деле записать значение в базу данных с помощью setValue() на DatabaseReference, которое возвращается push().

Смежные вопросы