2017-06-12 37 views
0

我試圖在帳戶和用戶模型之間創建一對一的關係。當我創建模型時,我將引發錯誤嘗試在ember.js中創建一對一關係時出錯

您不能再傳遞modelClass作爲store.buildInternalModel的第一個參數。改爲傳遞modelName。 錯誤

我的模型:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    email: DS.attr('string'), 
    account: DS.belongsTo('account') 
}); 


import DS from 'ember-data'; 

export default DS.Model.extend({ 
    user_name: DS.attr('string'), 
    content_type: DS.attr('string'), 
    creator: DS.attr('boolean'), 
    user: DS.belongsTo('user') 
}); 

在路線帳戶創建行動/創建-account.js:

createAccount (params) { 
     let current_user = this.get('auth.credentials.id'); 
     let account = this.get('store').createRecord('account', params); 
     account.set('user', user); 
     account.save(); 
    }, 

我不知道這是什麼錯誤意味着或如何工作的周圍。更糟糕的是,我的代碼符合在餘燼文檔中列出的代碼。我也能夠寫入我的後端數據庫,即使這個破碎的代碼。有沒有人遇到過這個錯誤/知道如何解決它?

+0

這個問題似乎與您的序列化程序。你可以嘗試{users:{embedded:'always'}}賬戶 – Gautam

+0

這個修復程序看起來像什麼/我將它放在哪裏? – d00medman

回答

0

這是因爲你設置accountuser作爲user而不是user模型對象的ID是可能的。您的行爲可能需要重構以獲取user模型對象,然後將其設置爲account。事情是這樣的:

createAccount(params) { 
    const store = this.get('store'); 
    const currentUserId = this.get('auth.credentials.id'); 
    store.findRecord('user', currentUserId).then((user) => { 
     params['user'] = user; 
     store.createRecord('account', params).save(); 
    }); 
} 

當然,這可以簡化如果auth服務可以在user提供記錄的一個模型參考爲好。