TypeError: instances.map is not a function angular loopback
TypeError: instances.map is not a function angular loopback
我正在使用 @mean-expert/loopback-sdk-builder 在 angular 4.3.6 上生成我的 api,当我使用此调用
时出现错误
this._userApi.findUsersByRoles([{'name':'cliente'}]).subscribe((users: User[]) => {
this.users = users;
}, (err) => {console.log(err) })
当我在环回资源管理器中尝试此方法时,我得到了一组用户。
debug capture
这是loopback sdk生成的'findUsersByRoles'函数
public findUsersByRoles(roles: any, customHeaders?: Function): Observable<User[]> {
let _method: string = "GET";
let _url: string = LoopBackConfig.getPath() + "/" + LoopBackConfig.getApiVersion() +
"/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))
);
}
这是控制台中打印的错误:
Capture link
我怀疑这可能是 sdk 构建器中的一个错误,因为 angular 项目是最近的,并且在整体结构上没有太多变化。
解决方案
正如答案中告诉我的那样,问题是实例不是数组,要解决这个问题,我必须在环回模型中的 remoteMethod 定义中设置 属性 root : true
returns: {
arg: 'users',
type: 'array',
root : true
}
错误的原因是您在不是数组的变量上调用 map
,确保控制台日志 instances
变量以查看它是否真的包含 array.The 错误告诉您 map
不是函数,因为您的变量不是任何数组,并且 map
在这种情况下是数组函数。
instances
是一个对象,正如您在调试捕获中看到的那样。它有 属性 users
这是一个数组。所以你需要在users
数组上调用map函数。
instances.users.map((instance: User) => new User(instance));
我正在使用 @mean-expert/loopback-sdk-builder 在 angular 4.3.6 上生成我的 api,当我使用此调用
时出现错误this._userApi.findUsersByRoles([{'name':'cliente'}]).subscribe((users: User[]) => {
this.users = users;
}, (err) => {console.log(err) })
当我在环回资源管理器中尝试此方法时,我得到了一组用户。
debug capture
这是loopback sdk生成的'findUsersByRoles'函数
public findUsersByRoles(roles: any, customHeaders?: Function): Observable<User[]> {
let _method: string = "GET";
let _url: string = LoopBackConfig.getPath() + "/" + LoopBackConfig.getApiVersion() +
"/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))
);
}
这是控制台中打印的错误:
Capture link
我怀疑这可能是 sdk 构建器中的一个错误,因为 angular 项目是最近的,并且在整体结构上没有太多变化。
解决方案
正如答案中告诉我的那样,问题是实例不是数组,要解决这个问题,我必须在环回模型中的 remoteMethod 定义中设置 属性 root : true
returns: {
arg: 'users',
type: 'array',
root : true
}
错误的原因是您在不是数组的变量上调用 map
,确保控制台日志 instances
变量以查看它是否真的包含 array.The 错误告诉您 map
不是函数,因为您的变量不是任何数组,并且 map
在这种情况下是数组函数。
instances
是一个对象,正如您在调试捕获中看到的那样。它有 属性 users
这是一个数组。所以你需要在users
数组上调用map函数。
instances.users.map((instance: User) => new User(instance));