2013-02-20 36 views
1

createRecord永遠不會創建belongsTo對象。用於一對一關係的createRecord在餘燼數據RC1(餘燼數據修訂版11)中失敗

是否有任何解決方案創建子模型對象的情況下,有這樣的關係Post-> hasOne -> Comment和評論是嵌入總是裏面的帖子。 。

這適用於Post -> hasMany -> Comments(如燼數據,例如需要幫助,我們都堅持這一問題

App.Test = DS.Model.extend({ 
     text: DS.attr('string'), 
     contact: DS.belongsTo('App.Contact') 
    }); 
    App.Contact = DS.Model.extend({ 
     id: DS.attr('number'), 
     phoneNumbers: DS.hasMany('App.PhoneNumber'), 
     test: DS.belongsTo('App.Test') 
    }); 
    App.PhoneNumber = DS.Model.extend({ 
     number: DS.attr('string'), 
     contact: DS.belongsTo('App.Contact') 
    }); 

    App.RESTSerializer = DS.RESTSerializer.extend({ 
    init: function() { 
     this._super(); 

    this.map('App.Contact', { 
     phoneNumbers: {embedded: 'always'}, 
     test: {embedded: 'always'} 
    }); 
    } 
}); 


/* in some controller code */ 
this.transitionToRoute('contact', this.get('content')); 

下面的代碼行的工作:

this.get('content.phoneNumbers').createRecord(); 

以下代碼行失敗:

this.get('content.test').createRecord(); 

這是錯誤:

Uncaught TypeError: Object <App.Test:ember354:null> has no method 'createRecord' 

所以hasMany適用於createRecord,但1:1失敗。難道我做錯了什麼 ?什麼是正確的方式/是否不可能做到這一點?

+0

@adrien coquio感謝,有關該問題的任何線索? – sudhanshu 2013-02-20 13:13:47

+0

我們沒有足夠的信息來正確地查看您的問題。也許你可以嘗試寫一個[jsfiddle](http://jsfiddle.net/)來重現問題?或者添加一些你的代碼示例,這將更明確? – 2013-02-20 13:32:18

+0

@adrien coquio我希望我的編輯能幫助你。尋找幫助,我們堅持這一點。 – sudhanshu 2013-02-20 14:12:15

回答

1

hasMany關係用DS.ManyArray表示。這個數組默認是空的,但仍然暴露了createRecord方法。

A belongsTo關聯只是對記錄的引用。默認爲null。所以你沒有任何方法來調用它。

在你的情況下,你首先要創建一個記錄,然後將其分配給另一個記錄。

this.set('test', App.Test.createRecord()); // the controller is a proxy to your model, no need to use content 

,或者你可以指定接觸到一個新的紀錄App.Test

App.Test.createRecord({ contact: this.get('content') }); 
+0

我們遇到了更深層次的NoSQL後端問題。如果對象嵌套太深,就會出現問題,我們需要將對象實例化深入n個層次。相反,我們採取了一種方式,我們現在關閉,現在保持Ember Data DS對象作爲我們與後端Rails + Mongo的主要交互,並將所有第一級對象(在我們的示例中爲Contact)作爲具有DS的自定義對象.Trasnforms將它們反映爲Ember對象。對於所有複雜的東西,我們在Ember Object下運行,並將其寫回Ember數據。我們遇到了很多sideload和其他問題的問題。但是非常感謝。 – sudhanshu 2013-04-21 09:35:23