目前我们正在升级我们的项目以使用Ember 2.0和Ember Data 2.0。
我有基于夹具适配器的型号。但是当我在模型上执行 store.findAll(modelName)时,我收到以下错误“TypeError:serializer.normalizeResponse不是函数 at ember $ data $ lib $ system $ store $ serializer $ response $$ normalizeResponseHelper“
型号
import DS from 'ember-data';
import FixtureData from '<from somewhere>';
var Model = DS.Model.extend({
code: DS.attr('string'),
description: DS.attr('string')
});
Model.reopenClass({
FIXTURES: FixtureData
});
export default Model;
适配器
import DS from 'ember-data';
export default DS.FixtureAdapter.extend({
queryFixtures: function (records, query) {
return records.filter(function (record) {
for (var key in query) {
if (query.hasOwnProperty(key)) {
if (record[key] !== query[key]) {
return false;
}
}
}
return true;
});
}
});
错误堆栈
TypeError:serializer.normalizeResponse不是函数 在ember $ data $ lib $ system $ store $ serializer $ response $$ normalizeResponseHelper (http://localhost:4201/assets/vendor.js:66323:43) 在http://localhost:4201/assets/vendor.js:66627:25 在Object.Backburner.run(http://localhost:4201/assets/vendor.js:9692:25) at ember $ data $ lib $ system $ store $$ Service.extend._adapterRun(http://localhost:4201/assets/vendor.js:71877:33) 在http://localhost:4201/assets/vendor.js:66626:15 在tryCatch(http://localhost:4201/assets/vendor.js:59683:14) 在invokeCallback(http://localhost:4201/assets/vendor.js:59698:15) 在发布(http://localhost:4201/assets/vendor.js:59666:9) 在http://localhost:4201/assets/vendor.js:39006:7 在Queue.invokeWithOnError(http://localhost:4201/assets/vendor.js:10395:18)
答案 0 :(得分:3)
FixtureAdapter
。这在很少的地方都有提及,教程还没有赶上:
来源:
作为FixtureAdapter
的替代方案,您可以使用填充相同角色的Ember Mirage,同时还提供其他一些功能。
答案 1 :(得分:0)
同样在ember-data-fixture-adapter
github页面上,他们建议立即使用PretenderJS。 https://github.com/pretenderjs/pretender