2

所以这是我的问题,我不确定如何正确创建一个属于的模型的记录。我有2个模型。

App.Group = DS.Model.extend({
  peeps: hasMany('people'),
});

App.People = DS.Model.extend({
  group: belongsTo('group')
});     

所以在应用程序中,我可以通过 2 种方式做到这一点

 var group = someGroup; // this is a reference to an actual group record
 var record = store.createRecord('people', { group: group});

然后'belongsTo'在整个应用程序中正常工作,但是当我尝试保存发送回服务器的json时

 { 'people' : { 'group' : { //group values except id, since ember data 
      doesn't try and serialize the belongsTo record } } }

因此,无论如何我都不知道应该将 People 记录保存到哪个记录。

或者我可以使用 id 创建记录

 var group = someGroup; // this is a reference to an actual group record
 var record = store.createRecord('people', { group: group.get('id')});

但后来我不能再正确使用记录的belongTo了。它没有链接到任何东西,它只是一个普通的 ol' id。然而,当我保存时,我得到了 {'people' : {'group' : id } }。

在我弄清楚之前,我已经添加了一些可怕的hackery

//weird hackary for a sec while I figure out ember data.
record.set('group', group.get('id'));
record.save().then(function(){
   record.set('group', group);
});

有什么建议/想法吗?

(作为旁注,我可能会看到我是否设置了 id,然后保存,它可能会根据服务器的结果重新加载,然后连接 belongsTo,但这是假设我在创建后立即保存,我没有想不得不假设)

4

1 回答 1

1

原来我在模型中定义了两次属性,一个是 a belongsTo,一个是attr.

App.People = DS.Model.extend({
  group: DS.belongsTo('group')
  group: DS.attr() <---- whoops
});   

应该怎么做(对于那些点击这个页面的人)

App.Group = DS.Model.extend({
  peeps: DS.hasMany('people'),
});

App.People = DS.Model.extend({
  group: DS.belongsTo('group')
});   
于 2013-09-18T05:22:33.357 回答