我有一个像这样的列表
{"ids": [
{
"id1": {
"name": "name1",
"lastname": "lastname1"
}
},
{
"id2": {
"name": "name2",
"lastname": "lastname2"
}
},
{
"id3": {
"name": "name3",
"lastname": "lastname3"
}
},
{
"id4": {
"name": "name4",
"lastname": "lastname4"
}
}
]
}
然后我检索并显示它:
import {Component} from '@angular/core';
import {AngularFire, FirebaseListObservable} from 'angularfire2';
@Component({
selector: 'app',
templateUrl: `
<ul>
<li *ngFor="let id of ids | async">
{{ id.name }}
</li>
</ul>
`,
})
class AppComponent {
ids: FirebaseListObservable<any>;
constructor(af: AngularFire) {
this.ids = af.database.list('/ids');
}
}
结果:
name1
name2
name3
name4
让我们说我想重新排序/移动一些对象,所以我得到这样的结果:
name3
name1
name2
name4
构建我的对象以轻松实现这一目标的好方法是什么? 我可以添加&#34; order&#34;属性,更新它并按顺序排序查询&#34; order&#34;属性。
this.ids = af.database.list('/ids',{
query: {
orderByChild: 'order'
}
});
或许我可以添加以前的id键作为属性,但是如何显示列表然后采取&#34; previous&#34;财产考虑?我想出了如何实现这一目标以避免未来的可扩展性问题。
答案 0 :(得分:2)
首先,您必须添加用于存储订单的属性。
其次,您不应该将此数据保存为数组,因为firebase无论如何都将其存储为对象。相反,你应该保存为对象。
请查看以下链接以获取更多信息。
https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html
因此,您的firebase数据库应该是这样的。
"ids": {
"id1": {
"name": "name1",
"lastname": "lastname1",
"order": 1
},
"id2": {
"name": "name2",
"lastname": "lastname2",
"order": 2
},
"id3": {
"name": "name3",
"lastname": "lastname3",
"order": 3
},
"id4": {
"name": "name4",
"lastname": "lastname4",
"order": 4
}
}
你应该通过order
财产来查询。