Я недавно начал перенос из старого 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, и данные все еще не отображаются на моей консоли. Я также могу добавить, что моя консоль даже не подтверждает, что я правильно или неправильно нажал данные.
Мне кажется, что я забываю что-то маленькое, и я не уверен, правильно ли создаю свои ссылки.
Я довольно новичок в публикации сообщений о переполнении стека, поэтому, пожалуйста, сообщите, если я упустил важные данные или отправил что-то правильно.
Спасибо за ваше время, ребята.
Наиболее распространенной причиной этого является то, что ваша Java-программа завершает работу до того, как клиент Firebase отправил данные в базу данных. Вы можете легко проверить, является ли это причиной, добавив 'Thread.sleep (10000)' в конец вашей программы. –
Спасибо за совет. Я попробую! Я думал, что причиной сна считалась плохая практика кодирования, хотя я должен просто сделать исключение в этом случае? –
Похоже, вы правы; программа Java не дает времени для правильного ввода информации в базу данных. Мои мысли, чтобы устранить необходимость Thread.sleep (10000); , Я мог бы вместо этого создать приложение JavaFX, которое просто советует пользователю, когда нажатие будет успешным. –