2013-02-20 95 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