首页 > 解决方案 > Firebase 实时数据库已删除

问题描述

我在我的反应原生应用程序中使用 Firebase 实时数据库。大多数事情都是通过 REST API 云函数完成的。应用程序中很少有东西直接使用实时数据库。最近我注意到我数据库中的所有数据都无缘无故地被删除了。甚至不再使用且未在我的应用程序/云功能的源代码中引用的数据库部分也消失了。

问题发生在两个项目及其数据库(生产/测试)上。我必须使用备份来恢复它们,但即使没有人使用应用程序(例如在测试环境中),它也会再次发生。

有谁知道这个问题的根源是什么?我有部分负责删除数据的某些部分,但不可能同时运行所有部分。我该如何解决?如何一次删除所有数据?

我的安全规则如下:

{
  "rules": {
    "version": {
      ".read": true,
      ".write": false
    },
    "flatLocations": {
      ".read": false,
      ".write": false
    },
    "geoplaces": {
      ".read": false,
      ".write": false,
      ".indexOn": "g"
    },
    "locations": {
      ".read": true,
      ".write": false
    },
    "locationSubscriptions": {
      ".read": false,
      ".write": false
    },
    "profiles": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "subscriptionCodes": {
      ".indexOn": "vendingPointId",
      ".read": false,
      ".write": false
    },
    "usersRoles": {
      ".read": false,
      ".write": false
    },
    "usersSubscriptions": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": false
      }
    },
    "vendingPoints": {
      ".read": false,
      ".write": false,
      ".indexOn": "vendorId"
    },
    "customersBasicData": {
      ".read": false,
      ".write": false
    },
    "notificationTokens": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "scheduled": {
      ".read": false,
      ".write": false
    }
  }
}

仅添加了一些数据。我没有删除它们的代码。

标签: firebasefirebase-realtime-database

解决方案


这个问题被undefined用作参考。当你运行admin.database().ref(somethingWhichIsUndefined).remove()时,整个数据库被擦除。


推荐阅读