为什么firebase集合似乎以空行开头?

时间:2013-03-20 21:17:49

标签: javascript rest firebase

firebase example database

我创建了一个简单的firebase数据集来测试一些REST调用(参见下图)。我想知道为什么,当我查询数据库中的集合时,firebase总是首先返回一个空行然后返回实际的行。这是我导出数据时得到的结果。注意系统和system_types下的空行:

{
  "systems" : [ null, {
    "system_type_id" : 2,
    "name" : "Commodore 128",
    "id" : 1
  }, {
    "system_type_id" : 1,
    "name" : "Difference Engine",
    "id" : 2
  }, {
    "system_type_id" : 2,
    "name" : "Osborne",
    "id" : 3
  } ],
  "system_types" : [ null, {
    "name" : "Babbage",
    "id" : 1
  }, {
    "name" : "Von Neumann",
    "id" : 2
  } ]
}

2 个答案:

答案 0 :(得分:24)

Firebase会自动检测对象“看起来像”数组的时间,并相应地对其进行转换。由于'systems'和'system_types'具有1,2和3的子节点,Firebase会在输出时自动将这些子节点转换为数组。但是,由于您没有为索引0指定值,因此Firebase只是插入一个空元素。

我建议使用从零开始的ID,或者用非数字的东西开始你的id,所以我们知道它不是数组(即:item1,item2,item3)。

您也可以忽略null元素 - 在Firebase中null和不存在是相同的。

答案 1 :(得分:0)

我找到了上述问题的黑客攻击。只需对所有数字键使用非数字(虚拟)键,导出时firebase不会将数字键转换为null。请检查屏幕截图以便更好地理解。我用过' d'与其他数字键,即使我没有使用键' d'。

enter image description here