2017-06-13 39 views
0

我正試圖在一個ember項目中查找與當前用戶關聯的帳戶。我可以通過{{account.user.id}}獲取用戶標識並將其傳遞給句柄腳本。但是,我的所有嘗試在我的模型掛接中查找具有此用戶標識的帳戶都未成功。查找屬於ember的關係中的數據

model (params) { 
    let accountID = this.store.query('account', { filter: { user: { id:currentUser} } }); 
    console.log(accountID.id); 
    return this.get('store').findRecord('account', accountID); 
    } 

ACCOUNTID的迴歸爲灰燼類,但我似乎無法從中解析任何數據:在路由/我-account.js

我現在的模型掛鉤。我將如何從返回的ember類獲取ID以便將其傳遞給我的獲取請求?

+0

'currentUser'從哪裏來? – mwp

回答

2

要獲得並從和灰燼對象設置屬性,你必須使用getset,如:

console.log(account.get('id')); 

更重要的是,雖然,你.query將(或應該,至少)迴歸與過濾器匹配的account模型數組。它將被封裝在一個承諾中 - 因爲它是一個異步網絡調用 - 所以你需要.then它。你可能只是想抓住的第一個帳戶:

model() { 
    return this.store.query('account', { filter: { user: { id: currentUser } } }) 
    .then(function(accounts) { 
     return accounts.get('firstObject'); 
    }); 
} 

如果你有一個正確的{JSON:API},你可以得到的user,然後從例如獲取其account關係/api/users/:id/account。你的模型鉤看起來像這樣:

model() { 
    return this.store.findRecord('user', currentUser) 
    .then(function(user) { 
     return user.get('account'); 
    }); 
} 
+0

這是成功地ping我的服務器並獲得200回,但它似乎是反彈我的前端。當我嘗試控制'.then'中的日誌帳戶時,終端上不顯示任何內容。你爲什麼認爲這是,我將如何去解決它? – d00medman

+1

@ d00medman 1.確保您的控制檯設置爲顯示所有內容。 2.有可能響應回到200,但有效負載不知何故,Ember Data對此感到窒息。在上面添加'.catch',並在console.log(或console.error)中添加響應。 – mwp

+0

好吧,我插入我的.catch,它返回一個錯誤,讀取 TypeError:不能將undefined或null轉換爲object。我怎樣才能解決這個錯誤? – d00medman