在嵌入式记录mixin中序列化没有id的记录

时间:2015-04-29 18:17:28

标签: javascript jquery ember.js ember-data mixins

我开始研究嵌入式记录mixin,用hasMany /属于关系序列化/反序列化记录。

型号:

 App.Post= DS.Model.extend({

   comment: DS.belongsTo('comment'),
   name:     DS.attr('string')
 });

 App.Comment =DS.Model.extend({

  post: DS.belongsTo('Post'),
  value:   DS.attr('string')
 });

串行:

App.PostSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
   attrs: {
      comments: {embedded: 'always'}
   }
});

当我尝试保存模型时,我收到以下错误。

   var model = this.store.createRecord('post');

    model.get('comments').pushObject(this.store.createRecord('comment'));


    model.setProperties({
        name: 'test'
    });

    model.save();

错误:断言失败:您必须在传递给push的对象中包含App.Comment的ID。只有浏览器控制台中的错误,但后端的数据,数据按预期进行。

所以,我开始寻找解决方法,并在https://gist.github.com/vampolo/8f8237cce2b8a52ab9d4中找到了一些有趣的东西。

来源:http://vincenzo-ampolo.net/2014/09/21/ember-data-embedded-records-without-ids-ready-to-go/

在关注该链接后,我按如下方式更改了序列化程序。

Serializer(已更改):

  App.PostSerializer=DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,DS.NoKeyMixin, {
        attrs: {
          comments: {embedded: 'always',noKey: true}
        }
     });

但是当我现在保存模型时,我得到了飞行错误。

未捕获的TypeError:embeddedRecord.serialize不是函数。

我坚持这个并寻求帮助。提前谢谢。

0 个答案:

没有答案