Skrocenie dwoch metod z forkJoin - Angular

Skrocenie dwoch metod z forkJoin - Angular
Mateuszto
  • Rejestracja:prawie 7 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Poznań
  • Postów:163
1

Cześć, obecnie mam dwie metody jedna pobierajaca dane druga filtrująca, da się to jakoś fajnie skrócić?

Kopiuj
searchEmployees(value: string = ''): Observable<IEmployeeDetails[]> {
  return forkJoin([
    this.http.get<any>(`${this.baseUrl}?name_like=${value}`),
    this.http.get<any>('http://localhost:3000/companies')
  ]).pipe(map(([employee, companies]) => employee.map(item =>
    {
      return {
        data: item,
        company: companies.find(x=> x.id == item.companyId)
      }
    })
  ))
}
Kopiuj
getEmployeesWithDetails(): Observable<IEmployeeDetails[]> {
  return forkJoin([
    this.getEmployees(),
    this.companiesService.getCompanies()
  ]).pipe(map(([employee, companies]) => employee.map(item =>
    {
      return {
        data: item,
        company: companies.find(x=> x.id == item.companyId)
      }
    })
  ))
}
Mateuszto
Problem rozwiazalem tak ze jednak zrobie filtrowanie po stronie frontu ;)
AI
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:18
0
  1. Zamiast forkJoina możesz skorzystać z switchMap i po prostu w requeście wrzucić dane do filtrowania.
  2. Funkcję mapującą możesz spokojnie zrobić jako "globalną" arrow function, wtedy skrócisz ten kod o jakieś 7 lini +-, a i będzie dużo bardziej czytelniejszy.
  3. Możesz zrobic dodatkową metodę, która będzie przyjmowała 2 Observable, Observable<Employee[]> i Observable<Company[]>.
FG
  • Rejestracja:około 5 lat
  • Ostatnio:4 dni
  • Postów:57
1

Jeśli chodzi o czytelność to jest wporzadku. Nie próbuj na sile zmniejszać linii kodu. Ja bym pomyślał nad jakaś mapa firm, bo takie przeszukiwanie listy aż boli, a wydajność jest najgorsza z mozliwych. Po drugie w większości przypadków lepiej trzymać identyfikatory (normalizacja) i dopiero na samym końcu składać obiekty z wykorzystaniem mapy.

Mateuszto
Jakiś przykład zastosowania identyfikatorów?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.