【问题标题】:How to delete data from a Firebase realtime database using Java?如何使用 Java 从 Firebase 实时数据库中删除数据?
【发布时间】:2021-02-18 12:53:01
【问题描述】:

我创建了一个小应用程序,它应该从 Firebase 实时数据库中获取数据。问题是,我会在从 Firebase 获取信息后删除所有数据。我已经搜索了解决方案,但我找到的所有解决方案都不适合我。我希望你能帮我解决我的问题。

class Example {
    
    public static Object data1;

    public static void main(String[] args) throws IOException, InterruptedException {
        FileInputStream serviceAccount = new FileInputStream("./google-services.json");
        FirebaseOptions options = FirebaseOptions.builder()
                .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl("https://example.firebaseio.com")
                .build();
      
        CountDownLatch latch = new CountDownLatch(2);
        Query reference1 = FirebaseDatabase.getInstance().getReference("/\"UserName\"/"data1");
      
        ref1.addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot datasnapshot) {
                data1 = datasnapshot.getValue();
                System.out.println(data1); 
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            };
        });
        
        DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("/\"UserName\"");
        databaseReference.child("/\"data1\"");
        databaseReference.removeValue();
        System.out.println("Successfully deleted user");
        }

【问题讨论】:

  • 您共享的代码有什么问题?具体来说:当您在调试器中单步执行此代码时,哪一行没有按照您的预期执行?
  • 对不起,我没有看到你的评论,我在这里发布的内容很好,但我试图找到一个解决方案,在我从 Firebase 检索数据后删除 Firebase 中的数据。我已经编辑了代码,最后一部分不起作用。
  • 这个字符串转义看起来非常不寻常:.getReference("/\"UserName\"/"data1")。你确定这是需要的吗?你可以添加你的 JSON 样本(作为文本,请不要截图)?您可以通过单击 Firebase Database console 的溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
  • 我使用 Intellij,所以它适用于我的以下方法:public static void removeAllExample() { FirebaseDatabase.getInstance().getReference("User Name").removeValueAsync(); System.out.println("User successfully deleted!!"); } 问题是,它只适用于这个命令:“removeValueAsync”,但我寻找另一种方法来做同样的事情.
  • 所以我将解释更多我需要什么,我有一些任务可以从 Firebase 检索数据并将其写入其他空间,但是因为它们都运行异步,所以应该在彼此之后运行的任务异步运行我得到了我不想要的结果,可以运行同步任务吗?

标签: java firebase firebase-realtime-database


【解决方案1】:

我用这些:

//1.
//Remove value from child   
mFirebaseDatabase!!.child(userId!!).removeValue()  
db.makeText(applicationContext, "Successfully deleted user", db.LENGTH_SHORT).show()  
  
//2.
// clear information  
user_val.setText("")  

【讨论】:

  • 谢谢你的回答,这个例子“child(userID!!).removeValue()”,它只会删除特定用户或所有用户的数据,因为我会删除所有数据读取后的实时数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2020-01-17
  • 2021-09-20
相关资源
最近更新 更多