我一直在尝试在 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.
*/
尝试通过显式设置或通过某种绑定来修改post
模型的metadata
,并且由于metadata
的值不是 ember 数据的metadata
模型的实例而导致set
失败,则可能会发生此错误。我会查看应用程序中进行此类修改的所有位置,并控制台.log用于设置metadata
的值。希望这有帮助。