Это зависит от того, какой конечной возвращаемой величиной вы хотите быть, т.е. от потока AuditTrail
объектов или одного массива AuditTrail[]
.
Stream:
public getAuditTrails(): Observable<AuditTrail> {
return this.http.get<SomeObject[]>(this.auditTrailUrl).pipe(
flatMap(data => data),
map<SomeObject, AuditTrail>(value => ({
logAction:value["logAction"],
targetEmpId:value["targetEmpId"]["empCode"],
createdDate:value["loggedDateTime"]
})
);
}
Выше flatMap
берет исходный массив и передает каждое значение как элемент в новом наблюдаемом потоке, позволяя каждому отдельному элементу передаваться в последующий map
.
Array:
Если вы хотите, чтобы это было уменьшено до массива, вы можете передать toArray
:
public getAuditTrails(): Observable<AuditTrail> {
return this.http.get<AuditTrail[]>(this.auditTrailUrl).pipe(
flatMap(data => data),
map<SomeObject, AuditTrail>(value => ({
logAction:value["logAction"],
targetEmpId:value["targetEmpId"]["empCode"],
createdDate:value["loggedDateTime"]
}),
toArray()
);
}
Лично я не думаю, что есть какое-то преимущество в плоском отображении, и использование map(data = data.map(...))
хорошо.