很长一段时间以来,我一直在努力解决以下问题。
...
export interface HotelRoomType {
foo: string;
boo: number;
rplans: Array<RatePlan>
}
export interface RatePlan {
prop1: string;
prop2: boolean;
prop3: number
}
doc1: HotelRoomType;
doc2: HotelRoomType;
doc3: HotelRoomType;
ratePlansArr$: Observable<RatePlan[]>;
...
doc1、doc2 和 doc3 是
/Company/CompanyId/Room_Types
子集合。
第一个文件如下
doc1 = {
foo: 'a',
boo: 1,
rplans: [
{
prop1: 'xxx',
prop2: true,
prop3: 512.50
},
{
prop1: 'yyy',
prop2: false,
prop3: 101
}
]
}
第二个:
doc2 = {
foo: 'b',
boo: 9,
rplans: [
{
prop1: 'ooo',
prop2: false,
prop3: 90
},
{
prop1: 'mmm',
prop2: false,
prop3: 120.80
},
{
prop1: 'nnn',
prop2: true,
prop3: 80
},
]
}
第三个遵循相同的模式
以下方法(使用 AngularFire)返回 RatePlan 数组的 observable
public getAllRatePlansForCompany(companyId: string): Observable<RatePlan[]> {
return this._fsSrvc.colWithIds$<RatePlan[]>('Company/' + companyId + '/Room_Types/')
.pipe(
map((res, idx) => res = res[idx].Rate_plans)
);
}
该方法是这样调用的:
this.ratePlansArr$ = this.inventoryService.getAllRatePlansForCompany(this.company.id);
this.ratePlansArr$.subscribe();
但是,在执行时,它只返回第一个文档 (doc1) 的 rplans。
如何修改它以返回一个包含所有 3 个文档的 rplan 的数组?
谢谢