如何在不转换为数组的情况下将数字添加为 firebase 实时数据库 child?

How to add number as firebase realtime database child without converting to array?

我想制作如下的数据库结构:

但它只是将整个 object 转换为一个数组。

这是我导出此 JSON 时得到的结果。

[ null, {
  "oPNfOlBcS4gl3rvZ4CIme9MDk0p1" : {
    "added_at" : 1647966583316,
    "city" : "Test",
    "country" : "Test",
    "name" : "Test",
    "state" : "Test",
    "uid" : "oPNfOlBcS4gl3rvZ4CIme9MDk0p1"
  }
}, {
  "oPNfOlBcS4gl3rvZ4CIme9MDk0p1" : {
    "added_at" : 1647966583316,
    "city" : "Test",
    "country" : "Test",
    "name" : "Test",
    "state" : "Test",
    "uid" : "oPNfOlBcS4gl3rvZ4CIme9MDk0p1"
  }
} ]

我尝试将第一个 child 保留为 1,将第二个保留为“第一个”(或一些随机字符串)并导出 JSON 这就是我得到的...

{
  "1" : {
    "oPNfOlBcS4gl3rvZ4CIme9MDk0p1" : {
      "added_at" : 1647966583316,
      "city" : "Test",
      "country" : "Test",
      "name" : "Test",
      "state" : "Test",
      "uid" : "oPNfOlBcS4gl3rvZ4CIme9MDk0p1"
    }
  },
  "first" : {
    "oPNfOlBcS4gl3rvZ4CIme9MDk0p1" : {
      "added_at" : 1647966583316,
      "city" : "Test",
      "country" : "Test",
      "name" : "Test",
      "state" : "Test",
      "uid" : "oPNfOlBcS4gl3rvZ4CIme9MDk0p1"
    }
  }
}

我想要类似的东西,但是 children 喜欢“1”,而不是“2”。

可能吗?或者像“first”一样使用children,“second”是目前唯一的解决方案?

当您读取带有连续数字键的节点时(如您的屏幕截图和第一个 JSON 示例所示),Firebase SDK(和 REST)API)会自动将该数据强制转换为一个数组。无法配置此行为。

如果您不想要数组强制转换,您应该使用 non-numeric 键。我常用的方法是在每个键前加上一个短字符串,例如“key1”、“key2”等

另见:Best Practices: Arrays in Firebase.