我收到错误
Assertion Failed: Passing classes to store methods has been removed. Please pass a dasherized string instead of undefined.
我的模特(喜欢)
url: attr('string'),
detail_url: attr('string'),
gallery_name: attr('string'),
description: attr('string'),
time: attr('string'),
thumbnail_url: attr('string'),
num_photos: attr('number'),
num_photos_HiFive: attr('number'),
is_following:attr('number'),
karma:attr('number'),
photoThumbs_HiFive:DS.hasMany('thumb'),
模特(拇指)
photo: attr('string'),
photo_url: attr('string'),
序列化器(两者都相同)
export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin,{
isNewSerializerAPI: true,
primaryKey:'pk',
normalize: function(typeClass, hash) {
var fields = Ember.get(typeClass, 'fields');
fields.forEach(function(field) {
var payloadField = Ember.String.underscore(field);
if (field === payloadField) { return; }
hash[field] = hash[payloadField];
delete hash[payloadField];
});
return this._super.apply(this, arguments);
}
});
我能够收到响应表单server.In ember inspector,“like”模型显示数据。但“thumb”模型没有显示数据。当我注释掉“photoThumbs_HiFive:DS.hasMany ('拇指'),“。它工作正常但没有填充拇指模型。不知道为什么会发生这种情况。
答案 0 :(得分:2)
我有类似的问题。如果后端的响应未返回遵循JSON API规范的JSON API文档以及http://jsonapi.org/format上的示例约定,则通常会发生此错误。有关详细信息,请参阅https://guides.emberjs.com/v2.3.0/models/customizing-serializers/。
我按照这里的答案解决了这个问题:https://stackoverflow.com/a/34168112/5837307。
基本上,修改您的like
序列化程序以使用RESTSerializer
而不是JSONSerializer
,并将嵌入属性包含在序列化程序中的attr
对象中。
在您的情况下,您可以执行以下操作:
export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin,{
isNewSerializerAPI: true,
// . . .
attrs: {
photoThumbs_HiFive: { embedded: 'always' }
}
});