2017-10-22 1 views
-1

mongoDb에 각도 2를 사용하고 있습니다. API 호출을 위해 서비스를 사용하고 있습니다.for 루프는 각도 2를 사용하는 마지막 요소 만 반환합니다.

this.at가 그냥 그것은 인증 키의이 fdfdsfdffsdf...

같은 토큰 :

여기 내 예제 코드입니다.

this.flatService.getFlats(this.at).subscribe(res: Response) => { 
    for (var i in res) { 
     console.log("i",i); 
     var id=res[i].USER_ID; 
     this.userService.getUserDetails(this.at,id).subscribe(users => { 
      this.flatsdetails.push(user); 
     }); 
    } 
}); 

먼저, getFlats()을 호출했습니다. JSON 값을 반환했습니다. 값에는 USER_ID 특성이 있습니다. getUserDetails()에있는 다른 함수로 전달됩니다.

ID 값을 위탁했습니다.이 123, 234처럼. getUserDetails()은 다른 배열을 푸시 한 후 사용자 JSON을 반환합니다.

사용자 값은 다음과 같습니다. anitha, Ganesan.

나는 의자를 닫았다. 그것은 [ 'anitha', 'Ganesan']을 보여줍니다.

그러나 i 값은 마지막 요소 만 반환합니다. 왜?

USER_ID -> USERNAME 
    123  -> anitha 
    124  -> Ganesan 

도 내가 여기에 시도 :

USER_ID -> USERNAME 
124  -> anitha 
124  -> Ganesan 

은이 같은 출력이 필요

for(var i = 0; i < res.length; i++) { 
} 

을하지만이 문제를 해결 할 수 없습니다입니다. For 루프

+0

당신이'JSON' 구조를 게시 할 수 있도록 아닌가요? –

+0

ur 응답을 주셔서 감사합니다. 나는이 (234)와 같은 ID를 전달하지 않았습니다. – vaishuani

+0

@vaishuani'.getFlats (this.at) '를 호출 한 후받는 JSON 응답은 전체 구조를 게시하십시오. @ Alexandru-IonutMihai 그의 문제의 원인이 아닌'var'과'let' 둘 다 실행 가능합니다. –

답변

-2

asynchronous이 때문에 forEach

this.flatService.getFlats(this.at).subscribe(res: Response) => { 
     angular.forEach(res, function(user, key) { 
      console.log("i",i); 
      var id=user.USER_ID; 
      this.userService.getUserDetails(this.at,id).subscribe(users => { 
       this.flatsdetails.push(user); 
      }); 
     }); 
    }); 
+0

감사합니다.이 오류가 발생했습니다. 정의되지 않은 'userService'속성을 읽을 수 없습니다. – vaishuani

+0

이 (가) 귀하의 의견과 관련하여 변경되었습니다. 당신은 또한 'angular.forEach'를 사용할 수 있습니다. @vaishuani –

+1

@phaniindra'.forEach'도'비동기 적'이 아닙니다 –

관련 문제