【问题标题】:How to remove all data from a Firebase database?如何从 Firebase 数据库中删除所有数据?
【发布时间】:2017-06-30 03:49:52
【问题描述】:

我开始使用使用Firebase 实时数据库的代码。我将它实施到我的解决方案中。连接和控制非常完美,所以我将它用于生产环境。

一段时间后,我正在升级,我需要再次删除所有数据 - 但请稍等,console 中的最高根级别不再有删除按钮,并且一次只允许在一个选定项目中使用:

https://console.firebase.google.com/project/{{project_name}}/database/data

在上次更新中仅显示此消息,没有下一步:

激活只读和非实时模式以提高浏览器性能 选择一个记录较少的键来实时编辑或查看

Q 如何一次删除所有数据?

【问题讨论】:

  • 我将此标记为重复,因为该问题与另一个问题非常相似,只是措辞不同。答案的另一部分是,假设您以管理员身份进行身份验证,则需要一行代码 (Swift: rootRef.setValue(nil) ) 来删除数据库。
  • @Jay 它不是重复的,因为 - # 这对问题有正确的标题问题 # 这描述了非常快速简单的解决方案。

标签: firebase firebase-realtime-database firebase-console


【解决方案1】:

您可以手动创建一个包含单个空条目的 JSON 文件并将其导入,这将删除所有现有条目。

【讨论】:

  • 谢谢。值得一提吗?
  • super..:-) 最快的清除数据库的方法..谢谢
  • 哈哈。好的。 Firebase 的人忘记了保留手动删除数据库对象的功能。谢谢!
【解决方案2】:

从 firebase 数据库中删除所有数据的简单方法是使用 Firebase CLI

设置好 CLI 后,您只需使用此命令即可删除您的数据:

firebase database:remove /

【讨论】:

  • 这应该被接受为 IMO 的正确答案。当有 firebase CLI 工具时,为此使用 curl / rest 似乎很麻烦且效率低下。
  • 具有多个数据库实例的项目可以通过指定特定实例来删除所有数据,如下所示:firebase --instance abcdef-r4566-45rty database:remove /
【解决方案3】:

我认为缺少一些提示 - 为什么在根级别缺少删除按钮,或者我们如何才能快速完成。

Firebase Support 的 Alvin 非常有帮助:

记录或节点数据过多,导致数据查看器切换到只读/非实时模式以提高浏览器性能。

解决方法很简单,使用REST即可。根据他们的文档Removing Data,但他们没有显示如何删除所有内容。

要删除 Alvin 可以使用的所有数据:

curl -X DELETE "https://{{project_id}}.firebaseio.com/.json"

这意味着您可以通过添加JSON 扩展名来对控制台中每个生成的URL 节点执行此操作:

https://{{project_id}}.firebaseio.com/{{path}}/{{path}}/{{path}}/.json

我希望这对某人有所帮助。

【讨论】:

  • @AlecRust 它应该可以工作 uri auth "https://{{name}}:{{password}}@{{project_id}}.firebaseio.com"
【解决方案4】:

解决方案 1:控制台 在您的项目中,单击数据库顶层的x 按钮。

然后点击delete

解决方案 2:程序化

无论你使用什么语言,调用类似:

database.set('/', null)

解决方案 3:Firebase CLI 从您的项目文件夹(您已经安装了 firebase-tools)在终端中写入以下内容,然后点击 Enter

database:remove /    

注意:

请考虑先备份您的数据。

【讨论】:

  • 仅供参考,解决方案 1(从 Forge 中删除)仅在您拥有足够小的数据库以显示实时视图时才有效。
  • CLI 做得很好
【解决方案5】:

我用过

curl -X DELETE "https://<prject name>.firebaseio.com/.json?auth=<Firebase Database secret>"

这也会删除数据库以及从 Firebase UI 中阻止的数据。希望这可以帮助。谢谢

仅供参考:

Your get Web API key is in https://console.firebase.google.com/project/<database name>/settings/serviceaccounts/databasesecrets

否则你可以去 项目概览设置 >> 项目设置 >> 服务帐户 >> 数据库机密

我也想在 cmets 部分发表评论,但由于缺少 stackoverflow 点,我将其写为答案

【讨论】:

    【解决方案6】:

    您可以通过编程方式实现一个方法,将一组空数据放在数据库的主根目录上 - 特别是您可以插入一个空值。

    在我的 Android 项目中是这样的:

    void removeDataFromDatabase(){
        DatabaseReference root = FirebaseDatabase.getInstance().getReference();
        root.setValue(null);
    }
    

    【讨论】:

      【解决方案7】:

      此代码有助于在 firebase 实时数据库中逐一删除您的对象。 按路径名对象删除所有子对象。

      FirebaseDatabase.getInstance().getReference("yourReferance").addChildEventListener(new ChildEventListener() {
                  @Override
                  public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                      for(DataSnapshot data : dataSnapshot.getChildren()) {
                          data.getRef().removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                              @Override
                              public void onSuccess(Void aVoid) {
                                  Toast.makeText(getContext(), "Successfully remove", Toast.LENGTH_SHORT).show();
                              }
                          });
                      }
                  }
      
                  .....
              });
      

      【讨论】:

        【解决方案8】:

        创建一个内容为 {} 的新 JSON 文件。 进入firebase控制台点击右边的3个点,点击import JSON,选择新创建的JSON文件,它将从firebase数据库中删除所有数据。

        【讨论】:

          【解决方案9】:

          爱过:

          public void removeDataFromFirebaseDatabae(){
          FirebaseDatabase.getInstance().getRefrence().child("what you will remove").addChildEventListener(new onChildListener(){
          @override
          public void onChildAdded(DataSnapshot dp,String str){
          for(DataSnapshot dx : dp.getChildren()){
          dx.getRef().removeValue().addOnSuccessListener(new onSuccessListener<Void>(){
          @override
          public void onSuccess(Void pvoid){
          Toast.makeText(this,"remove success",5000).show();
          }});
          }}});
          }
          

          【讨论】:

          • 请格式化您的代码并创建一个添加了足够相关上下文的最小示例,以便普通程序员可以理解您所做的以及它是如何解决问题的
          • حكيني عربي طارق مافهمت قصدك،هادا كود كامل
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-11
          • 2019-03-18
          • 2019-01-24
          • 2021-12-10
          相关资源
          最近更新 更多