2017-11-12 9 views
1

로다시가있는 json 배열에서 거부하는 일부 데이터가 있습니다. 원하지 않는 여러 키 값을 거부해야합니다.각도 맵 Http의 체인 맵 또는 체인 필터가 약속을 반환하는 방법

나는 체인 맵을 사용할 수 있고 거부 함수를 다시 사용할 수도 있고 또는 거부 메소드를 사용하기위한 술어 함수를 작성할 수도 있다고 생각하고있다.

나는이 문제에 대해 지나치게 우려하고있다. 누군가 내 머리를 감쌀 수있게 도와 줄 수 있을까? 이것이 작동하려면 관측 가능으로 전환해야합니까?

나는 맥주, 주류, 와인 등을 거부 할 수 있기를 바란다. 데이터도 중첩되어 있습니다. 여기

여기 내 서비스 인 예를 JSON 객체 enter image description here

입니다.

getMenuByLocationID(locationID) { 
return this._http.get('/api/locations/menu', {params: {locationID: locationID}}) 
.map((response: Response) => 
_.reject(response.json(), { 
    _embedded: { 
    menu_categories: [ { 
     name: 'BEER' 
    } ] 
    } 
})) 
.toPromise() 
.catch(this.handleError); 

} 내가 _.reject가 된 키워드와 일치하는 여러 값을 처리 할 수 ​​있다고 생각하지 않습니다

+0

같은

뭔가 ... 잘못 될 수 있는가? –

+0

@ angular/http에서 {http} 가져 오기 –

+0

예상되는 결과는 무엇입니까? 'getMenuByLocationID (someId) .then ((expectedData) => ...)'를 호출하면'expectedData'의 예상 값은 얼마입니까? –

답변

1

. 따라서 거부 된 각 값 (BEER, WINE, ...)과 함께 _.reject을 여러 번 사용할 수 있지만 최상의 해결책은 아닙니다.

대신 _.reject에 모든 값을 한 번에 테스트하는 사용자 지정 조건 자 함수를 사용할 수 있습니다. 하지만 당신은이 시험을 바로해야만합니다. 나는 lodash가 솔루션을 제공한다고 생각하지 않습니다. 그러나 나는 당신이`Http` 서비스 나 새로운`HttpClient` 서비스를 사용하십니까 그

gettMenuByLocationID (locationID) { 
    return this._http.get('/api/locations/menu', {params: {locationID: locationID}}) 
      .map((response: Response) => { 
       let data = _.reject(response.json(), {_embedded: {menu_categories: [{name: 'BEER'}]}}) 
       data  = _.reject(data, {_embedded: {menu_categories: [{name: 'WINE'}]}}) 
       return _.reject(data, {_embedded: {menu_categories: [{name: 'WHATEVER'}]}}) 
      }) 
      .toPromise() 
      .catch(this.handleError) 
} 
+0

그건 내가 묻는거야. 어떻게 위와 같이 반환 된 약속에서 여러 번 사용합니까? –

+0

@ GarrettSanderson 코드를 추가했습니다. 그렇게하면 범주에 따라 더 많은 응답을 필터링 할 수 있습니다. –