我正在修补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"
}
}
}
}显然,对于我的列表,我希望字典项名称是整数,这样我就可以确保排序是正确的。
发布于 2012-07-09 03:43:37
您可以将数组保存到Firebase。例如:
var data = new Firebase(...);
data.set(['x', 'y', 'z']);Javascript数组本质上只是具有数字键的对象。在检索数据时,当Firebase对象只有数字键时,我们会自动检测,如果是这样,我们会返回一个数组。
请注意,对于存储许多人都可以追加的数据列表,数组不是一个好的选择,因为多个人在数组中写入相同的索引可能会导致冲突。相反,我们有一个"push“函数,它为您的数据创建一个按时间顺序排列的唯一ID。
此外,如果您打算使用数组作为数据排序的一种方式,那么使用我们的优先级可以更好地实现这一目的。参见the docs。
发布于 2012-07-08 02:44:50
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"两个孩子。
https://stackoverflow.com/questions/11377011
复制相似问题