【问题标题】:Firebase realtime database erasedFirebase 实时数据库已删除
【发布时间】:2019-03-02 23:28:50
【问题描述】:

我在我的 react 本机应用程序中使用 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
    }
  }
}

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

【问题讨论】:

  • 您的 Firebase 数据库中没有自动删除数据库。如果您的数据消失了,要么是因为有执行此操作的用户、进程或客户端,要么是因为 Firebase 方面出现了莫名其妙的错误。虽然后者总是可能的,但我从来没有听说过它在未被发现的情况下发生,也没有听说过发生在完整的数据库中,更不用说发生在单个开发人员的多个数据库中了。如:您身边的某个人或某事似乎更有可能这样做。
  • 所以我会进一步调查,更改密码,仔细检查数据库规则等。如果在所有这些之后,您仍然找不到原因,reach out to Firebase support 寻求个性化帮助在故障排除中。他们也许能够检查您的项目最近的异常操作。
  • 无论哪种方式:如果没有关于您的项目、功能、代码、规则等的更多信息,这里任何人都无能为力。
  • 谢谢你们的帮助。我在问题描述中添加了安全规则。我相信他们很好。我将添加代码以检查应用程序未触及的部分数据是否仍存在于数据库中。如果不是,我会抛出一个错误并知道第一次出现问题的时间。

标签: firebase firebase-realtime-database


【解决方案1】:

问题是undefined 在参考中使用。当你运行admin.database().ref(somethingWhichIsUndefined).remove() 时,整个数据库都会被擦除。

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2021-02-23
    相关资源
    最近更新 更多