【问题标题】:Java server in Firebase not pushing information onto the database [duplicate]Firebase 中的 Java 服务器未将信息推送到数据库 [重复]
【发布时间】:2016-05-28 04:23:46
【问题描述】:

我最近开始从旧的 Firebase API 迁移到新的 Google Firebase。我遵循Getting Started Guide 并能够创建一个管理员访问帐户并生成一个 JSON 文件,并且成功地(我认为)使用示例代码初始化了 SDK:

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()、push()、update()、事务数据将数据推回数据库。

我实际上已经复制并粘贴了数据directly from the new API reference page on saving data,但数据仍然没有出现在我的控制台上。我还可以补充一点,我的控制台甚至没有确认我是否正确或错误地推送了数据。

我感觉好像忘记了一些小事,我不确定我是否正确创建了引用。

我对实际在 Stack Overflow 上发帖还很陌生,所以请告知我是否遗漏了重要数据或正确发布了某些内容。

感谢您的宝贵时间,伙计们。

【问题讨论】:

  • 最常见的原因是您的 Java 程序在 Firebase 客户端将数据发送到数据库之前退出。您可以通过在程序末尾添加 Thread.sleep(10000) 轻松验证是否是原因。
  • 感谢您的建议。我会试试!我认为导致睡眠被认为是不好的编码习惯,在这种情况下我是否只需要破例?
  • 看来你是对的; Java 程序没有时间将信息正确地推送到数据库中。我的想法是,为了消除对 Thread.sleep(10000) 的需要; ,我可以改为创建一个 JavaFX 应用程序,它只是在推送成功时通知用户。
  • 是的。有很多方法可以解决这个问题,Thread.sleep() 实际上只是用于故障排除。如果您想在非交互式 Java 程序中执行此操作,您可以使用信号量让它等到写入完成。
  • stackoverflow.com/questions/37098006/…顺便说一句。但我不能将此标记为重复,因为该答案既未被接受也未被赞成。有时 Stack Overflow 的这些规则会妨碍您。 :-/

标签: java firebase firebase-realtime-database


【解决方案1】:

来自Frank van Puffelen 的工作回复:

最常见的原因是您的 Java 程序在 Firebase 客户端将数据发送到数据库之前退出。您可以通过将 Thread.sleep(10000) 添加到程序末尾来轻松验证这是否是原因

但是,我也注意到这个帖子是重复的。原始问题可以在here 找到。虽然这个问题是关于移交后的 Google 拥有的 Firebase,但解决方案是相同的。

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2020-01-12
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多