Я использую HTTP-сервис Angular 2 для получения некоторых данных, API возвращает «n» количество результатов, но я хочу только обрабатывать сумму «x».RxJS лучший способ ограничить и вернуть массив результатов ответа
Учитывая, что у меня нет доступа к конечным точкам API (для создания методов ограничения или findOne), я пытаюсь выяснить, как лучше всего обрабатывать количество результатов, которые будут возвращены в который вызывает мой метод «loadLatest» моего HomeService.
При этом конкретном примере, реакция является объектом, который выглядит примерно так:
{
success: true,
data: [Object, Object, Object],
user: 'testUser'
}
я заинтересован только в массиве данных (скажем, получить только первые два объекта он содержит).
Если бы я хотел, чтобы получить один результат, я мог бы сделать что-то вроде этого:
import { Http, Headers } from '@angular/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
const URL = 'http://exampleapi.com/example';
@Injectable()
export class HomeService {
constructor(private _http: Http){}
loadLatest() {
return this._http.get(URL)
.map(res => res.json())
.map(({data}) => data[0]);
}
}
И это работает (не обязательно означает, что на самом деле это нормально) ... Тем не менее, я знаю, что там есть быть лучшим способом вернуть, например, первые два объекта в массиве данных в объекте ответа. Или первые три, или четыре ... Или сколько угодно.
Я читал о методе «принять», однако я не считаю, что это будет на самом деле работать в этом случае ...
Это где я подписавшись на него и с помощью службы в пределах моего компонента:
import { Component, OnInit } from '@angular/core';
import { HomeService } from './home.service';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'home',
templateUrl: './home.html'
})
export class HomeComponent implements OnInit {
// I used this typing because I originally only wanted a single item
// This might have to change
items: Observable<Object>
constructor(private homeService: HomeService){}
ngOnInit() {
this.homeService.loadLatest()
.subscribe(result => this.items = result);
}
}
Как вы можете видеть, я хочу в итоге быть массивом с двумя объектами, которые я присваиваемых this.items, так что я могу перебрать этих двух объектов с использованием углового-х * ngFor.
Любая помощь была бы принята с благодарностью! Спасибо заранее!
Возможно, человек, который отклонил мой вопрос, хотел бы уточнить, почему он/она сделал это ... Не уверен, что мой вопрос натолкнулся на правильный путь. Мне действительно интересно, есть ли определенный реактивный метод, чтобы выполнить вышеописанное, и, как я прокомментировал ответ Puigcerber, мне также интересно, является ли метод карты с помощью метода среза наиболее подходящим подходом. Но нисходящий поток без объяснения законного вопроса ... Действительно? – deathandtaxes