TypeError:instances.map不是一个函数角回送

问题描述:

我正在使用@ mean-expert/loopback-sdk-builder在angular 4.3.6上生成我的api,并且当我使用此调用时出现错误TypeError:instances.map不是一个函数角回送

this._userApi.findUsersByRoles([{'name':'cliente'}]).subscribe((users: User[]) => { 
    this.users = users; 
}, (err) => {console.log(err) }) 

当我在回环资源管理器中尝试这种方法时,我得到了一个用户数组。

debug capture

这是由环回SDK

public findUsersByRoles(roles: any, customHeaders?: Function): Observable<User[]> { 
    let _method: string = "GET"; 
    let _url: string = LoopBackConfig.getPath() + "/" + LoopBackConfig.getApiVersion() + 
    "https://*.com/users/findUserByRoles"; 
    let _routeParams: any = {}; 
    let _postBody: any = {}; 
    let _urlParams: any = {}; 
    if (typeof roles !== 'undefined' && roles !== null) _urlParams.roles = roles; 
    let result = this.request(_method, _url, _routeParams, _urlParams, _postBody, null, customHeaders); 
    return result.map((instances: Array<User>) => 
     instances.map((instance: User) => new User(instance)) 
    ); 
    } 

产生的 'findUsersByRoles' 功能而这是在控制台印刷错误:

Capture link

我怀疑这可能是sdk构建器中的一个错误,因为角度项目是最近的并且没有多少变化整体结构。

解决方案

正如我在答复中说,问题是,情况不是数组,解决这个问题,我不得不设置属性根:在remoteMethod定义真正的环回模式

returns: { 
     arg: 'users', 
     type: 'array', 
     root : true 
     } 
+0

“我正在收集用户数组”你确定吗? 'console.log(实例)'在'result.map'内部打印什么? – echonax

+0

我不明白你最后的评论,但我不认为typeof'instances'是'Array ' – echonax

+0

我更新了显示的值int – Edlop

instances是一个对象,如您在调试捕获中看到的。它有属性users这是一个数组。所以你需要调用users数组上的map函数。

instances.users.map((instance: User) => new User(instance)); 

的原因错误是,你在这不是一个数组变量调用map,确保控制台日志instances变量,看它是否真的含有array.The错误是告诉你,map是不是函数,因为你的变量不是任何数组,map是在这种情况下的数组函数。

+0

我添加了一个调试捕获,显示实例的值 – Edlop

+0

您可以在控制台中看到实例是一个包含用户数组的对象,所以你应该尝试'instances.users.map'而不是'instances.map' –