firebase中的json数据格式 - 是否支持数组?和/或者,如果只支持对象,字典可以用整数编号吗?

时间:2012-07-07 17:07:02

标签: json firebase

我正在修补firebase并对数据结构感到好奇。浏览到我的数据库,firebase允许我修改数据库中的结构和数据。但似乎firebase仅支持对象(以及列表的字典)。

我想知道是否支持数组。我还想知道字典项是否可以用整数命名 - firebase接口只插入字符串作为名称,这让我担心订购记录。

以下是通过firebase接口创建的json示例:

{
 "dg":{
  "users":{
   "rein":{
    "searches":{
     "0":{
      "urls":"http://reinpetersen.com,http://www.reinpetersen.com",
      "keyphrases":"rein  petersen,reinsbrain,programmer turned kitesurfer"
     }
    }
   },
   "jacqui":{
    "searches":{
     "0":{
      "urls":"http://www.diving-fiji.com,http://diving-fiji.com",
      "keyphrases":"diving marine conservation, diving fiji"
     }
    }
   }
  },
  "crawl_list":{
   "1":{
    "urls":"http://www.diving-fiji.com,http://diving-fiji.com",
    "keyphrases":"diving marine conservation, diving fiji"
   },
   "0":{
    "urls":"http://reinpetersen.com,http://www.reinpetersen.com",
    "keyphrases":"rein  petersen,reinsbrain,programmer turned kitesurfer"
   }
  }
 }
}

显然,对于我的列表,我希望字典项名称是整数,这样我就可以确保排序正确。

2 个答案:

答案 0 :(得分:12)

您可以将阵列保存到Firebase中。例如:

var data = new Firebase(...);
data.set(['x', 'y', 'z']);

Javascript Arrays本质上只是带有数字键的对象。检索数据时,我们会自动检测Firebase对象何时只有数字键,如果是这种情况,我们会返回一个数组。

请注意,为了存储许多人可以追加的数据列表,数组不是一个好的选择,因为多个人在数组中写入相同的索引可能会导致冲突。相反,我们有一个“推送”功能,可以为您的数据创建按时间顺序排列的唯一ID。

此外,如果您打算使用数组作为排序数据的方式,那么使用我们的优先级有更好的方法。请参阅the docs

答案 1 :(得分:3)

Firebase文档有关于如何订购数据的相当不错的部分:Ordered Data

就像JSON字段一样,Firebase字段只能用字符串命名。听起来你正在寻找的是setWithPriority(),它将可排序的优先级数据附加到你的字段,或push(),这保证为你的字段提供按时间顺序排列的唯一名称。 (更多关于列表和push() here。)

您还可以push()set()阵列。例如,

new Firebase("http://gamma.firebase.com/MyUser").push(["cakes","bulldozers"]);

会产生一棵树,就像您期望的那样,MyUser会收到一个名字独特的孩子,其子女有"0":"cakes""1":"bulldozers"