私はAngular 2のHTTPサービスを使ってデータを取得していますが、APIは 'n'個の結果を返します。RxJS応答の結果を制限し返す最良の方法配列
私はAPIのエンドポイントにアクセスできないことを考慮して(limitまたはfindOneの種類のメソッドを作成するために)、結果の数を処理する最良の方法を試しています。私のHomeServiceの "loadLatest"メソッドを呼び出すコンポーネント。この特定の例では
、応答は次のようになりますオブジェクトです:
{
success: true,
data: [Object, Object, Object],
user: 'testUser'
}
私は(たとえば、それが含まれている唯一の最初の2つのオブジェクトを取得する)データ配列内の唯一の興味があります。
私は単一の結果を取得したい場合は、私はこのような何かを行うことができます:(必ずしもそれは実際に大丈夫だという意味ではありません)
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]);
}
}
そして、それは動作しますが...しかし、私は知っているためにそこに持っていますレスポンスオブジェクト内のデータ配列内の最初の2つのオブジェクトを返すより良い方法です。または最初の3つ、または4つ...または多くの場合、私は欲しいです。
私は、私はそれに加入し、私のコンポーネント内のサービスを使用している場所です...しかし、私はそれが実際にこのケースで働くだろうとは思わない、方法を「取る」について
をお読みください。
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);
}
}
あなたが見ることができるように、私は私がの角度* ngForを使用して、これら二つのオブジェクトを反復処理することができるように、結果は、私がthis.itemsに割り当てる二つのオブジェクトを持つ配列であるためにしたいです。
ご協力いただければ幸いです! ありがとうございます!
おそらく私の質問を下落させた人は、なぜ彼/彼女がそうしたのかを詳しく説明したいと思います...私の質問が正しい方法で起こったかどうかはわかりません。私は本当に上記のことを達成するための具体的なリアクティブメソッドがあるのか、Puigcerberの答えにコメントしたのかというと、スライスメソッドを使ったマップメソッドが最もパーマネントなアプローチかどうか疑問に思っています。しかし正当な質問の説明がないdownvote ...本当ですか? – deathandtaxes