考虑以下获取实体并为每个 ID 属性加载相关模型的代码(加载外键对象):
if (!lazyLoad) {
return this.http.get(`${environment.endpoint}/file`, {
params: params
}).pipe(
mergeMap(res => this.loadModel(res, 'prop1ID')),
mergeMap(res => this.loadModel(res, 'prop2ID')),
mergeMap(res => this.loadModel(res, 'prop2ID'))
)
}
}
第一个合并工作,第二个得到undefind
。试图阅读merge
并mergeAll
没有成功。
http
请求中的对象如下所示:
{
id: '1',
name: 'user',
prop1ID: 34,
prop2ID: 44,
prop3ID: 54
}
在这三个动作之后,我希望它看起来像(在loadModel()
功能的帮助下):
{
id: '1',
name: 'user',
prop1ID: 34,
prop1IDModel: { ... },
prop2ID: 44,
prop2IDModel: { ... },
prop3ID: 54
prop3IDModel: { ... },
}
我的loadModel
功能:
private loadModel(entity, modelProperty): Observable<object> {
switch (modelProperty) {
case 'prop1ID':
this.generalService.getProp1ID(entity.prop1ID).subscribe((data) => {
entity.prop1IDModel = data;
return of(entity);
});
break;
case 'prop2ID':
...
break;
case 'prop3ID':
...
break;
default:
return of(entity);
}
}