Ember-Data Embedded Polymorphic BelongsTo不工作

时间:2015-02-01 07:17:08

标签: ember.js ember-data ember-app-kit

我一直试图在Ember Data中为我提供多态关联,但我还没有运气。希望有人可以看看,如果我错过了什么,请告诉我。

我使用的是Ember 1.8.1和Ember-Data 1.0.0-beta.14.1。 此外,我们使用ECMAScript6语法(导入,导出默认值)。

基本上,我们只有一个嵌入式多态关系似乎并不适合我们。如果有人对为什么这不起作用有任何建议或想法,我会喜欢一些帮助。我已经被困在这个上几天了。

基本上我们遇到了麻烦。我得到的错误是:
错误:断言失败:您只能添加'元数据'记录这种关系



// /app/models/metadata.js:
export default DS.Model.extend({
  type: DS.attr('string'),
  lastModified: DS.attr('number');
});

// /app/models/metadata-story.js
import Metadata from '/app/models/metadata';
export default Metadata.extend({
  body: DS.attr('string') 
});

// /app/models/metadata-photo.js
import Metadata from '/app/models/metadata';
export default Metadata.extend({
  url: DS.attr('string'),
  width: DS.attr('number'),
  height: DS.attr('number')
});

// /app/models/post.js
export default DS.Model.extend({
  headline: DS.attr('string'),
  metadata: DS.belongsTo('metadata', {polymorphic: true})
});


// /app/serializers/post.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,{
  attrs: {
    metadata: {embedded: 'always'}
  }
});


// /app/routes/posts.js
// Here is the code that is being run to load the records:
export default Em.Route.extend({
  model: function(params){
    var query = {
      start: params.start,
      offset: params.offset
    };
    return this.store.find('post', query);
  }
});


// Also, here is a sample of the Payload that the normalizePayload function is returning:
{posts:[
  {
    id: 0,
    headline: 'Well, that is SOME story!',
    metadata: {
      body: 'This is the body...'
    },
    metadataType: 'metadata-story'
  },
  {
    id: 1,
    headline: 'Well Hello',
    metadata: {
      url: 'http://somewhere.com/pic.png',
      width: 450,
      height: 350
    },
    metadataType: 'metadata-story'
  }
]}

/* 
Another thing that I should mention is that I have tried setting the Ember.MODEL_FACTORY_INJECTIONS flag to both true and false, but it has not seemed to make any difference at this point.
*/




1 个答案:

答案 0 :(得分:0)

如果您尝试修改post模型metadata,或者通过明确设置或通过某种绑定来修改set,则可能会发生此错误。metadata失败,因为metadata的值不是余烬数据的metadata模型的实例。我会查看应用程序中正在进行此类修改的所有位置,以及console.log用于设置{{1}}的值。希望这会有所帮助。