【发布时间】:2014-09-25 16:17:13
【问题描述】:
在第一次构建我的应用程序时,我手动创建了数据,它看起来类似于:
{
"data": {
0: {
"author": "gracehop",
"title": "Announcing COBOL, a New Programming Language"
},
1: {
"author": "alanisawesome",
"title": "The Turing Machine"
}
}
}
我可以使用 core-ajax 检索数据并毫无问题地遍历自定义组件,如下所示:
<template is="auto-binding">
<core-ajax id="ds" auto url="https://mysite.firebaseio.com/data.json" response="{{data}}"></core-ajax>
<my-items items="{{data}}"></my-items>
</template>
但是,现在我正在尝试使用 push() 在我的应用程序中创建新数据。问题是新数据看起来像这样:
{
"data": {
"-JRHTHaIs-jNPLXOQivY": {
"author": "gracehop",
"title": "Announcing COBOL, a New Programming Language"
},
"-JRHTHaKuITFIhnj02kE": {
"author": "alanisawesome",
"title": "The Turing Machine"
}
}
}
这与their documentation 一致,其中声明
您的第一直觉可能是使用 set() 来存储孩子 自动递增整数索引... Firebase 提供了一个 push() 每次添加新孩子时生成唯一 ID 的函数 指定的 Firebase 参考。通过为每个使用唯一的子名称 列表中的新元素,多个客户端可以将子元素添加到同一个 同时定位,不用担心写冲突。这 push() 生成的唯一 ID 基于时间戳,因此列出项目 将自动按时间顺序排列。
推送一两个项目后,我不再在列表中看到任何项目。如果我删除使用 push() 创建的任何内容,其他项目会再次出现。
【问题讨论】:
-
你用'Polymer'标记了这个,但我没有看到任何Polymer codez...
-
Firebase
push创建地图而不是数组,template repeat只使用数组。您必须创建一个中间数组或遍历键。 -
这正是 Firebase 的 AngularFire 为 Angular 所做的事情:当您调用
$asArray()时,它会从 Firebase 正常使用的有序集合中构造一个数组。 (如果您愿意接受挑战,请参阅github.com/firebase/angularfire/tree/master/src)