2016-05-26 2 views
0

Я использую новую консоль Firebase. Я пытаюсь сохранить объект в базе данных, но он не будет сохранен. Ниже приведен код.Данные не сохраняются в базе данных Firebase от android

DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference(); 
mFirebaseRef.push().setValue(object, new DatabaseReference.CompletionListener() { 
      @Override 
      public void onComplete(DatabaseError databaseError, DatabaseReference reference) { 
       if (databaseError != null) { 
        Log.e(TAG, "Failed to write message", databaseError.toException()); 
       } 
      } 
     }); 

«объект» создан правильно. Нет ошибки, которую я получаю, и я проверил в отладке, что метод onComplete не запускается. Правило безопасности также верно для записи.

+0

Можете ли вы показать, как вы создаете «объект»? Или, по крайней мере, минимальный «объект», с помощью которого вы можете воспроизвести проблему? –

+0

объект является ссылкой на класс java. Объект object = new Object (params). Код также не работает с Hash Map. –

ответ

2

Обратите внимание, что DatabaseReference.CompletionListener срабатывает при «подтверждении серверами базы данных». Возможно ли, что у вас не было сетевого подключения во время вашего теста? Я скопировал код и запустил его успешно по телефону с object определенным образом:

Object object = new String("Test"); 

Я тогда режим включен самолет, повторно побежал код и наблюдал поведение, которое вы описали. Слушатель завершения не выстрелил, пока я не отключил режим полета, и было установлено сетевое соединение.

Пример кода для проверки состояния вашего сетевого подключения приведен в this documentation.

+1

У меня не было разрешения на Интернет в манифесте. Спасибо, Это была глупая ошибка. –

0

использовать следующий код:

mFirebaseRef.push().setValue(object).addOnCompleteListener(new OnCompleteListener<Void>() 
{ 
          @Override 
          public void onComplete(@NonNull Task<Void> task) { 
          if(task.isSuccessful()){ 
           // write code for successfull operation 
          } 
          } 
         }); 
        } 

.С будет генерировать случайный ключ, на котором ваши данные будут записываться, если вы не используете .С его перепишет на предыдущих сохраненных данных.

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