2016-05-26 2 views
2

Я недавно начал перенос из старого API Firebase в новую Firebase Google. Я последовал за Getting Started Guide и был в состоянии создать учетную запись для доступа администратора и создать файл в формате JSON, а также успешно (я думаю) инициализируется SDK, используя пример кода:Сервер Java в Firebase не вставляет информацию в базу данных

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."); 
       } 
      } 
     }); 

Это мое понимание того, что код рисует ссылку на базу данных, основанную на конкретизированной App, и SetValue(), нажмите(), обновление(), и данные транзакции выталкивает данные обратно в базу данных.

Я практически скопировал и вставил данные directly from the new API reference page on saving data, и данные все еще не отображаются на моей консоли. Я также могу добавить, что моя консоль даже не подтверждает, что я правильно или неправильно нажал данные.

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

Я довольно новичок в публикации сообщений о переполнении стека, поэтому, пожалуйста, сообщите, если я упустил важные данные или отправил что-то правильно.

Спасибо за ваше время, ребята.

+2

Наиболее распространенной причиной этого является то, что ваша Java-программа завершает работу до того, как клиент Firebase отправил данные в базу данных. Вы можете легко проверить, является ли это причиной, добавив 'Thread.sleep (10000)' в конец вашей программы. –

+0

Спасибо за совет. Я попробую! Я думал, что причиной сна считалась плохая практика кодирования, хотя я должен просто сделать исключение в этом случае? –

+0

Похоже, вы правы; программа Java не дает времени для правильного ввода информации в базу данных. Мои мысли, чтобы устранить необходимость Thread.sleep (10000); , Я мог бы вместо этого создать приложение JavaFX, которое просто советует пользователю, когда нажатие будет успешным. –

ответ

2

Рабочий ответ от Frank van Puffelen:

Наиболее частой причиной этого является то, что ваша программа Java выходит, прежде чем клиент Firebase отправил данные в базу данных. Вы можете легко проверить, является ли это причиной, добавив Thread.sleep (10000) в конец вашей программы.

Однако было также обращено мое внимание на то, что эта нить является дубликатом. Оригинальный вопрос можно найти here. Несмотря на то, что этот вопрос относится к постиндустрированной Google Firebase, решение такое же.

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