目前我们正在升级我们的项目以使用 Ember 2.0 和 Ember Data 2.0。
我有基于夹具适配器的模型。但是当我在模型上执行 store.findAll(modelName) 时,我收到以下错误“TypeError:serializer.normalizeResponse 不是函数 在 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 is not a function at ember$data$lib$system$store$serializer$response$$normalizeResponseHelper (http://localhost:4201/assets/vendor.js:66323:43) at http://localhost: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) at http://localhost:4201/assets/vendor.js:66626:15 at tryCatch (http://localhost:4201/assets/vendor.js:59683:14) at invokeCallback (http://localhost:4201/assets/vendor.js:59698:15) at publish (http://localhost:4201/assets/vendor.js:59666:9) at http://localhost:4201/assets/vendor.js:39006:7 at Queue.invokeWithOnError (http://localhost:4201/assets/vendor.js:10395:18)
最佳答案
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.js - 使用带有 Ember Data 2.0 的 Fixture Adapter 在模型上进行 Store.findAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366902/