导入JSON时如何为Firebase Realtime数据库中的记录分配GUID

时间:2018-09-05 15:58:42

标签: android json firebase firebase-realtime-database

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

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

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

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

如果可能的话,我将如何实现。 谢谢, 席德

1 个答案:

答案 0 :(得分:1)

将单个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,则必须自己预先生成密钥。幸运的是algorithm for generating push IDs is available online,并记录在此博客文章:The 2^120 Ways to Ensure Unique Identifiers中。