ember-data创建具有一对多关系的记录

时间:2013-10-31 10:46:07

标签: ember.js ember-data

我正在尝试使用下两个模型中的相关关系创建一个新记录。

App.Kid = DS.Model.extend({
    attribute1: DS.attr("string"),
    parent: DS.belongsTo(parent)
});

App.Parent = DS.Model.extend({
    attribute1: DS.attr("string"),
    kids: DS.hasMany(kid)
});

我的路线如下。我在我的模板中也使用了一个动作处理程序,用于通过表单保存我的模型以及属性的新值。

App.KidRoute = Ember.Route.extend({
    model: function (id) {
        return this.store.createRecord('kid', {parent: id});
    },
    actions:{
        save: function(){
            this.get('currentModel').save();
        }
    }
});

但是我收到了这个错误。

Assertion failed: You can only add a 'parent' record to this relationship 

我知道我做错了但事情是,如果parent只是一个属性而不是belongsTo关系,它就有效。但我不想要这个。

先谢谢!

1 个答案:

答案 0 :(得分:2)

在那段代码中:

this.store.createRecord('kid', {parent: id});

变量id可能是一些字符串,数字等。ember-data需要模型实例,因此您需要加载它。

尝试使用以下内容:

App.KidRoute = Ember.Route.extend({
    model: function (id) {
        var route = this;
        return this.store.find('parent', id).then(function(parentModel) {
            return route.store.createRecord('kid', {parent: parentModel});
        });
    },
    actions:{
        save: function(){
            this.get('currentModel').save();
        }
    }
});