Javascript 对于循环,仅返回使用角度2的最后一个元素

Javascript 对于循环,仅返回使用角度2的最后一个元素,javascript,mongodb,angular,Javascript,Mongodb,Angular,我在mongoDb中使用angular 2。我正在为调用的API使用服务 下面是我的示例代码: this.at就是这样的令牌fdsfdffsdf… 这是授权密钥 this.flatService.getFlats(this.at).subscribe(res: Response) => { for (var i in res) { console.log("i",i); var id=res[i].USER_ID; this.user

我在mongoDb中使用angular 2。我正在为调用的API使用服务

下面是我的示例代码:

this.at
就是这样的令牌
fdsfdffsdf…

这是授权密钥

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值。这些值具有用户ID属性。它被传递给
getUserDetails()
中的另一个函数

我安慰了id值:像这样123234
getUserDetails()
在我推送另一个数组后,还返回用户JSON

用户值如下所示:anitha,Ganesan

我安慰了那些单身汉。它显示['anitha','Ganesan']

但是
i
值只返回最后一个元素。为什么?

USER_ID -> USERNAME
124     -> anitha
124     -> Ganesan
我需要这样的输出:

  USER_ID -> USERNAME
    123     -> anitha
    124     -> Ganesan
我也试着这样做:

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

但我无法解决此问题。

For循环不是异步的,所以请将其设置为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);
            });
        });  
    });

你能发布
JSON
结构吗?谢谢你的回复。不,我只传递了这样的id(234)。@vaishuani调用
.getFlats(this.at)
后收到的JSON响应请发布完整结构@Alexandru IonutMihai的
var
let
都是可行的,这不是他的原因problem@AnteJablanAdamović.我正在使用mongodb this.at是令牌。我更新了我的代码。请检查一下。如果我从API中得到结果,我刚刚传递了授权密钥。你仍然不理解我,我要的是
JSON RESPONSE
res
值,这是调用数据库后得到的
响应
this.flatService.getFlats(this.at).subscribe(res:Response)=>{}
post
res
感谢您的回复。我收到此错误,无法读取undefined.changed的属性“userService”。您还可以使用
angular.forEach
@vaishuani@phaniindra
.forEach
不是
异步的
很乐意帮助您