将对象存储在 firebase 中以便稍后以简单的方式重新排序的正确方法是什么?
What would be the proper way to store objects in firebase to reorder them later in an easy way?
我有一个这样的列表
{"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
假设我想要 reorder/move 一些对象,所以我得到这样的结果:
name3
name1
name2
name4
构造我的对象以轻松实现此目的的好方法是什么?
我可以添加 "order" 属性,更新它并按 "order" 属性 排序查询。
this.ids = af.database.list('/ids',{
query: {
orderByChild: 'order'
}
});
或者我可以将之前的 id 键添加为 属性,但是如何显示列表,同时考虑 "previous" 属性?我弄清楚如何实现这一点以避免未来的可扩展性问题。
首先,您必须添加 属性 来存储订单。
其次,您不应该将此数据保存为数组,因为 firebase 无论如何都将其存储为对象。相反,您应该另存为对象。
查看以下内容link了解更多信息。
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
属性.
查询
我有一个这样的列表
{"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
假设我想要 reorder/move 一些对象,所以我得到这样的结果:
name3
name1
name2
name4
构造我的对象以轻松实现此目的的好方法是什么? 我可以添加 "order" 属性,更新它并按 "order" 属性 排序查询。
this.ids = af.database.list('/ids',{
query: {
orderByChild: 'order'
}
});
或者我可以将之前的 id 键添加为 属性,但是如何显示列表,同时考虑 "previous" 属性?我弄清楚如何实现这一点以避免未来的可扩展性问题。
首先,您必须添加 属性 来存储订单。
其次,您不应该将此数据保存为数组,因为 firebase 无论如何都将其存储为对象。相反,您应该另存为对象。
查看以下内容link了解更多信息。
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
属性.