2
我有這樣什麼是正確的方式來存儲對象在firebase中以簡單的方式重新排序它們?
{"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
什麼將是一種很好的方式來構建我的對象,以輕鬆實現這一目標? 我可以添加「訂單」屬性,更新它並通過「訂單」屬性排列查詢。
this.ids = af.database.list('/ids',{
query: {
orderByChild: 'order'
}
});
或者我可以添加以前的id密鑰作爲屬性,但是如何顯示該列表,然後將「previous」屬性考慮在內?我想出瞭如何實現這一點以避免未來的可伸縮性問題。
謝謝你,這是我正在考慮的解決方案,但迫使我更新每一個'id',當我刪除一個。我不確定當涉及到巨大的對象時,這是否是更新事物的適當方式。我正在考慮存儲對前一個'id'的引用,但無法弄清楚如何以預期順序檢索結果。 – johnerfx
刪除時不需要更新任何內容。您的訂購仍保留。例如,您可以使用order來刪除對象:3.您將擁有order:1,2,4的對象,並且您的排序將起作用。爲什麼你必須更新刪除任何東西? –
是的,沒錯。但是我可能想要創建另一個對象並將其放在第一位,所以自然而然地想要更新所有對象的順序。或者實際上將第一個命令設置爲<0。我只是不知道這是否應該走的路。爲了以防萬一,我還希望在排序方法中具有某種人類可讀的一致性。現在不能想到其他邊緣情況。 – johnerfx