【问题标题】:How to assign GUID to records in Firebase Realtime Database when importing JSON导入 JSON 时如何将 GUID 分配给 Firebase 实时数据库中的记录
【发布时间】:2018-09-05 15:58:42
【问题描述】:

我需要将大型数据集导入 Firebase 实时数据库以用于新的 Android 应用。准备数据不是问题,我在 Excel 中有一个 VBA 脚本可以执行此操作,但是,我希望导入的数据库中的一些节点具有 GUID,例如在将新数据“推送”到 Firebase 时生成的那些。我不知道该怎么做。

例如,如果我导入这个测试数据集:

{
"Genera": {
    "Genus_1": {
        "S001" : {
            "name": "name_1",
            "common_name": "common_1"
        },
        "S002": {
            "name": "name_2",
            "common_name": "common_2"
        }
    }
}

我想用 GUID 类型的字符串替换“Genus_1”和“Sxxxx”字符串。

如果这是可能的,我将如何实现它。 谢谢, 席德

【问题讨论】:

  • 您能否编辑您的问题,向我们展示您更改后的架构应该是什么样子?

标签: android json firebase firebase-realtime-database


【解决方案1】:

当您将单个 JSON sn-p 导入 Firebase 实时数据库时,Firebase 不会为您生成任何子数据密钥。这意味着您有两种选择:

  1. 在单个调用中导入每个部分。
  2. 预生成您自己的密钥。

在单个调用中导入每个部分

如果您希望 Firebase 为 JSON 的特定部分生成密钥,则需要为每个此类部分调用 Firebase API,调用 push() 或您使用的平台的等效项。例如

curl -X POST -d '{
  "S001" : {
    "name": "name_1",
    "common_name": "common_1"
  }
}' 'https://yourdb.firebaseio.com/Genera.json'

由于您在此处使用 POST,Firebase 服务器将在 Genera 下为该调用中的 JSON 生成一个新密钥。

预生成您自己的密钥

如果您想一次性导入 JSON,您必须自己预先生成密钥。幸运的是 algorithm for generating push IDs is available online,并记录在这篇博文中:The 2^120 Ways to Ensure Unique Identifiers

【讨论】:

  • 非常感谢弗兰克的及时回答。由于我的 JSON 是在 Excel 中生成的,因此我需要将算法移植到 VBA,这应该是可能的。
猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2021-03-16
  • 2020-04-20
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多