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) })
当我在回环资源管理器中尝试这种方法时,我得到了一个用户数组。
这是由环回SDK
public findUsersByRoles(roles: any, customHeaders?: Function): Observable<User[]> {
let _method: string = "GET";
let _url: string = LoopBackConfig.getPath() + "/" + LoopBackConfig.getApiVersion() +
"https://stackoverflow.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' 功能而这是在控制台印刷错误:
我怀疑这可能是sdk构建器中的一个错误,因为角度项目是最近的并且没有多少变化整体结构。
解决方案
正如我在答复中说,问题是,情况不是数组,解决这个问题,我不得不设置属性根:在remoteMethod定义真正的环回模式
returns: {
arg: 'users',
type: 'array',
root : true
}
instances
是一个对象,如您在调试捕获中看到的。它有属性users
这是一个数组。所以你需要调用users
数组上的map函数。
instances.users.map((instance: User) => new User(instance));
的原因错误是,你在这不是一个数组变量调用map
,确保控制台日志instances
变量,看它是否真的含有array.The错误是告诉你,map
是不是函数,因为你的变量不是任何数组,map
是在这种情况下的数组函数。
我添加了一个调试捕获,显示实例的值 – Edlop
您可以在控制台中看到实例是一个包含用户数组的对象,所以你应该尝试'instances.users.map'而不是'instances.map' –
“我正在收集用户数组”你确定吗? 'console.log(实例)'在'result.map'内部打印什么? – echonax
我不明白你最后的评论,但我不认为typeof'instances'是'Array' –
echonax
我更新了显示的值int – Edlop