我正在修补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"
}
}
}
}
显然,对于我的列表,我希望字典项名称是整数,这样我就可以确保排序正确。
答案 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"
。