目前,我们正在升级我们的项目以使用Ember 2.0和Ember Data 2.0 .
我有基于夹具适配器的型号 . 但是当我在模型上做 store.findAll(modelName) 时,我得到以下错误"TypeError: serializer.normalizeResponse is not a function at ember$data$lib$system$store$serializer$response$$normalizeResponseHelper "
Model
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;
Adapter
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)at http:/ /lhosthost:4201/assets/vendor.js:66627:25 at 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 at 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)
2 回答
FixtureAdapter
已在2015年6月5日发布的Ember Data 1.0b19中弃用 . 这在很少地方都有提及,教程尚未赶上:资料来源:
Ember Data removal of FixtureAdapter - many of the examples tutorials will break
GitHub - Breaking Changes
Ember Data 1.0.0b19 Changelog
作为
FixtureAdapter
的替代方案,您可以使用Ember Mirage来填充相同的角色,同时还提供其他一些功能 .同样在
ember-data-fixture-adapter
github页面上,他们建议立即使用PretenderJS . https://github.com/pretenderjs/pretender