首页 > 解决方案 > 导入 JSON 时如何将 GUID 分配给 Firebase 实时数据库中的记录

问题描述

我需要为一个新的 Android 应用程序将一个大型数据集导入 Firebase 实时数据库。准备数据不是问题,我在 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”字符串。

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

标签: androidjsonfirebasefirebase-realtime-database

解决方案


当您将单个 JSON 片段导入 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,则必须自己预先生成密钥。幸运的是,用于生成推送 ID 的算法可在线获得,并记录在此博客文章中:确保唯一标识符的 2^120 种方法


推荐阅读