2017-09-16 12 views
0

私は、平均4.3.6で私のAPIを生成するために@ mean-expert/loopback-sdk-builderを使用しています。この呼び出しを使用するとエラーが発生します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://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' 関数であり、これは、コンソールで印刷されたエラーです:

Capture link

私はと思われますこれは最近の角度プロジェクトであり、多くの変更がなかったので、SDKビルダーのバグかもしれません。 n全体の構造。ループバックモデルでremoteMethod定義に真:私は答えに言われたように、問題は、インスタンスがこの問題を解決するための配列、ではないということです私は、プロパティのルートを設定する必要がありました

ソリューション

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

"私はユーザーの配列を取得しています"あなたは本当ですか? 'console.log(インスタンス)'は 'result.map'の中に何を出力しますか? – echonax

+0

私はあなたの最後のコメントを理解していませんが、typeofインスタンスが 'Array ' – echonax

+0

と思われません – Edlop

答えて

1

instancesは、デバッグキャプチャのようにオブジェクトです。それは配列であるプロパティusersを持っています。したがって、users配列のmap関数を呼び出す必要があります。

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

エラーの理由は、あなたがそれは本当にarray.Theエラーがmapことを言っている含まれているかどうかを確認するためにinstances変数をログコンソールに確認して、配列でない変数にmapを呼び出しているということですはあなたの変数は配列ではないので、関数ではなく、mapは配列関数です。

+0

インスタンスの値を示すデバッグキャプチャを追加しました – Edlop

+0

コンソールでインスタンスはユーザの配列を含むオブジェクトなので、 'instances.map'の代わりに' instances.users.map'を試してみてください。 –

関連する問題