2016-09-08 104 views
0

我有一個我知道應該存在的模型的id,並且我想創建一個帶有此模型的belongsTo關聯的記錄。但是,我只想在創建關聯時提供id,而不是首先查詢相關模型。這可能嗎?有沒有辦法用belongsTo關聯創建一個使用關聯模型ID的ember-data模型?

這是我想做什麼工作(或它的某些變體):

store.createRecord('person', {childId: '1', name: 'billybob'}); 

這對於定義爲模型如下:

Person = DS.Model.extend({ 
    name: DS.attr('string'), 
    child: DS.belongsTo('child'), 
}); 

的指南建議是這樣的:

store.createRecord('person', {child: child, name: 'billybob'}); 

其中child已經在某個點從商店提取或者是新創建的記錄。

我當時希望能夠回到孩子身邊。這可以避免需要後端的端點直接處理兒童,因爲它們總是通過人員端點處理。

由於我們只給後端ID,所以如果該記錄實際上不存在,它將需要失敗。

我已經試過各種排列,如:

store.createRecord('person', {child: {id: '1'}, name: 'billybob'}); 

,並試圖自定義模式的串行沒有成功。

任何幫助,非常感謝。

+0

如果你沒有加載孩子,你從哪兒得到孩子ID?如果它在你的商店考慮'peekRecord'。 – Lux

+0

這是在動態網址中提供的ID,因此如果有人從鏈接進入,模型將不會被加載。在我的特殊情況下,關聯的ID(在我的示例中爲child_id)是針對不是用戶特定的模型,但路由的主要模型(在我的示例中是人的ID)是用戶特定的。因此,如果用戶特定的實例使用通用關聯模型不存在,我想創建一個,同時將非用戶特定模型與它關聯。 –

回答

0

我認爲你最好的辦法是首先用store.push()創建記錄。然後,您可以使用store.unload從記錄中刪除商店,或者確保adapter.shouldReloadRecord爲此記錄返回true,以便它在下次您加載時find它。