Попытки записи / чтения базы данных Firebase в реальном времени безрезультатно - рабочий стол java-сервера - PullRequest
0 голосов
/ 25 июня 2019

Я целый день пытался понять, что происходит с моим кодом, который должен писать и читать из базы данных Firebase Realtime, но безуспешно, и нет никаких проблем, ошибок, исключений или каких-либо подсказок, которыеможет помочь мне разобраться.Я кодирую в Java для настольных компьютеров , а не для Android, поскольку все вхождения в моем поиске многократно возвращаются, несмотря на то, что я также кодировал для Android ту же операцию, используя ту же базу данных, и она работала просто отлично.Я трачу на это слишком много времени и энергии, и у меня слишком короткий срок, чтобы передать его как проект для дисциплины, которой я занимаюсь, поэтому, если кто-то может помочь, я буду очень признателен !!

Так как в Android вполне возможно читать и записывать данные, я исключил возможность появления проблемы в БД.Я следую инструкциям, доступным на странице администрирования Firebase .Как я уже сказал, ошибки нет, но и результата нет.С той же конфигурацией и файлом ключа json, полученным из консоли Firebase, корректно работает с Firebase Cloud Messaging, поэтому я посчитал, что ключ тоже в порядке.

Код, который я пробую, приведен ниже, почти такой жевеб-страница Firebase:

package pt.ipp.estg.housecontrol;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.io.FileInputStream;
import java.io.IOException;

class StarterFRD {

    public static void main(String[] args) throws IOException {

        FileInputStream refreshToken = new FileInputStream("/Users/wdcunha/Development/Java/frdproj/src/main/resources/housecontrolmobile-firebase-adminsdk-qv0hl-f41a07409d.json");

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(refreshToken))
                .setDatabaseUrl("https://housecontrolmobile.firebaseio.com/")
                .build();

        FirebaseApp.initializeApp(options);

     // As an admin, the app has access to read and write all data, regardless of Security Rules
        DatabaseReference ref = FirebaseDatabase.getInstance()
                .getReference("users");

        System.out.println("ref: "+ref);

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Object document = dataSnapshot.getValue();
                System.out.println("document: "+document);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                System.out.println("canceled: "+error.toException());
            }
        });

        Utilizador utilz = new Utilizador("Euquipe", "eu@quipe.com");

        System.out.println("utilz nome: "+utilz.getNome());
        System.out.println("utilz email: "+utilz.getEmail());

        ref.child("2").push().setValueAsync(utilz);

        ref.child("3").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."+databaseReference);
                }
            }
        });
    }
}

База данных такова:

Ссылка на печать базы данных Firebase, которую я использую

КогдаЯ запускаю код, я просто могу взять данные из строки ниже с println (это просто URL-адрес из БД):

        DatabaseReference ref = FirebaseDatabase.getInstance()

Он установлен как проект Maven, поэтому pom.xml записываетсяэто:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pt.ipp.estg.housecontrol</groupId>
    <artifactId>housecontrolserver</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-admin</artifactId>
            <version>6.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.7.25</version>
        </dependency>

    </dependencies>
</project>

Весь код находится в Github здесь .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...