2017-09-16 46 views
0

我正在使用@ 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://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構建器中的一個錯誤,因爲角度項目是最近的並且沒有多少變化整體結構。

解決方案

正如我在答覆中說,問題是,情況不是數組,解決這個問題,我不得不設置屬性根:在remoteMethod定義真正的環回模式

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

「我正在收集用戶數組」你確定嗎? 'console.log(實例)'在'result.map'內部打印什麼? – echonax

+0

我不明白你最後的評論,但我不認爲typeof'instances'是'Array ' – echonax

+0

我更新了顯示的值int – Edlop

回答

1

instances是一個對象,如您在調試捕獲中看到的。它有屬性users這是一個數組。所以你需要調用users數組上的map函數。

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

的原因錯誤是,你在這不是一個數組變量調用map,確保控制檯日誌instances變量,看它是否真的含有array.The錯誤是告訴你,map是不是函數,因爲你的變量不是任何數組,map是在這種情況下的數組函數。

+0

我添加了一個調試捕獲,顯示實例的值 – Edlop

+0

您可以在控制檯中看到實例是一個包含用戶數組的對象,所以你應該嘗試'instances.users.map'而不是'instances.map' –

相關問題