保存模型会破坏一对多的关系

时间:2014-08-08 18:57:18

标签: ember.js ember-data

当我保存一个Parent对象(它有许多Child对象)时,这种关系似乎被打破了。 Ember docs对此问题保持沉默。

我需要做什么才能使Parent对象仍显示Child对象?

当执行此操作时,我希望父名称将从“Taylor”更改为“Matt”,而Child,“Ben”将保持不变并保留在页面上。目前,该操作会从Parent中删除Child。

saveParent: function() {
  this.store.find('parent', 1).then(function (parent) {
    parent.set('name', 'Matt');
    parent.save();
    });
}

jsbin示例:http://jsbin.com/zodorule/8/

1 个答案:

答案 0 :(得分:2)

这是JSONSerializer和hasMany关系的问题。你可以查看'固定'jsbin:http://jsbin.com/zodorule/13

请参阅此问题:http://discuss.emberjs.com/t/ember-data-fixture-adapter-saving-record-loses-has-many-relationships/2821

我将此添加到您的代码中并且可以正常运行:

DS.JSONSerializer.reopen({
    serializeHasMany : function(record, json, relationship) {
        var key = relationship.key;

        var relationshipType = DS.RelationshipChange.determineRelationshipType(
                record.constructor, relationship);

        if (relationshipType === 'manyToNone'
                || relationshipType === 'manyToMany'
                || relationshipType === 'manyToOne') {
            json[key] = Ember.get(record, key).mapBy('id');
            // TODO support for polymorphic manyToNone and manyToMany
            // relationships
        }
    }
});