使用属于关系的Ember Data正确创建记录

时间:2013-09-16 05:31:09

标签: ember.js ember-data belongs-to

所以这是我的问题,我不确定如何正确创建属于的模型的记录。我有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')});

但是我不能再使用该记录的属于正确的了。它没有任何联系,只是一个简单的问题。然而,当我保存时,我得到{'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,但这是假设我在创建后立即保存,我不想假设)

1 个答案:

答案 0 :(得分:1)

原来我在模型中定义了两次属性,一个是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')
});