我有一个这样的列表
{"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
构建我的对象以轻松实现这一目标的好方法是什么? 我可以添加“order”属性,更新它并按“order”属性对查询进行排序。
this.ids = af.database.list('/ids',{
query: {
orderByChild: 'order'
}
});
或者也许我可以添加以前的 id 键作为属性,但是如何显示列表,同时考虑“以前的”属性?我弄清楚了如何实现这一点以避免 future 的可扩展性问题。
最佳答案
首先,您必须添加用于存储订单的属性。
其次,您不应该将此数据保存为数组,因为 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
属性进行查询。
关于javascript - 将对象存储在 firebase 中以便稍后以简单的方式重新排序的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40115201/