Каков будет правильный способ хранения объектов в базе данных, чтобы упростить их последующее упорядочение?
У меня есть такой список
{"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'
}
});
Или, может быть, я мог бы добавить предыдущий идентификатор ключа в качестве свойства, но как тогда отобразить список, принимая во внимание "предыдущее" свойство? Я выясняю, как этого добиться, чтобы избежать проблем с масштабируемостью в будущем.
1 ответ
Сначала вам нужно будет добавить свойство для хранения заказа.
Во-вторых, вы не должны сохранять эти данные в виде массива, так как 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
имущество.