我要从Firestore返回一个Observable数组,并想按我在数据库对象内创建的索引对它们进行排序。
它们像这样存储在数据库中:
然后,它们将根据键ID的顺序显示在UI中(按字母顺序),但是,我希望它们根据索引在UI中进行排序。但是,我确实需要将id保留为初始密钥。
我曾尝试将值映射并使用sort()按下面的ode所示按索引排序,但是仍然以随机顺序返回。
这就是我使用map尝试按index的键值进行排序的方式。
this.bedrooms$ = this.property$.pipe(
flatMap((property: any) => this._property.getAllBedrooms(property.bedrooms, this.propertyId))
);
this.sortedBedroom$ = this.bedrooms$.pipe(
map((room: any) => {
return room.sort((a: any, b: any) =>
b.index - a.index
);
}
)
);
答案 0 :(得分:0)
您的问题可能与该行b.test - a.index
而不是b.index - a.index
有关。
我将为此提出另一种解决方案,即使用AngularFirestore
中的@angular/fire
从Firestore排序数据:
this.afs.collection<Bedroom>('bedrooms', ref => ref.orderBy('index'))