8

我正在修补 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"
   }
  }
 }
}

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

4

2 回答 2

12

您可以将数组保存到 Firebase。例如:

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

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

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

此外,如果您打算将数组用作排序数据的一种方式,那么使用我们的优先级可以更好地做到这一点。请参阅文档

于 2012-07-08T19:43:37.377 回答
3

Firebase 文档有一个关于如何排序数据的非常好的部分:Ordered Data

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

你也可以push()set()数组。例如,

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

生成一棵您期望的树,MyUser 收到一个唯一命名的孩子,该孩子有孩子"0":"cakes""1":"bulldozers".

于 2012-07-07T18:44:50.440 回答