我已经在这个问题上停留了很长一段时间了。我已经彻底研究了stackoverflow上的问题,但无法找到解决方案。
我正在尝试使用ember-data和rails API将JSON数据加载到我的应用程序商店中。我正在使用ember-cli。
我继续得到的错误是:Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined
该应用程序由几个报告组成,每个报告都有图表。服务器触发对API的请求(将uuid作为查询字符串添加)并接收以下json响应:
{
reports: [
{
id: 1,
name: "Report 1",
description: "Test Report 1",
display_order: 0,
chart_ids: [
1
]
},
{
id: 2,
name: "Report 2",
description: "Test Report 2",
display_order: 1,
chart_ids: [
5,
6
]
}
]
}
这是报告的路线:
export default Ember.Route.extend({
setupController: function(controller) {
controller.set('model', this.store.find('report'));
}
});
我的模特:
var Report = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
displayOrder: DS.attr('integer'),
charts: DS.hasMany('chart', { async: true })
});
var Chart = DS.Model.extend({
reports: DS.belongsTo('report'),
config: DS.attr()
});
我正在使用ActiveModelAdapter和ActiveModelSerializer:
ApplicationAdapter:
export default DS.ActiveModelAdapter.extend({
namespace: 'api',
ajax: function(url, type, hash) {
if (Ember.isEmpty(hash)) {
hash = {};
}
if (Ember.isEmpty(hash.data)) {
hash.data = {};
}
hash.data.uuid = $.cookie('uuid');
this._super(url, type, hash);
}
});
序列化器:
export default DS.ActiveModelSerializer.extend();
此刻我很沮丧。 Ember调试器并不是非常有用。任何帮助都会受到超级赞赏。
如果有更多信息有用,请告诉我。
答案 0 :(得分:0)
我非常确定报告的JSON响应中需要charts_ids
而不是chart_ids
(请注意图表后的s
)。
或将您的hasMany更改为图表(虽然这看起来很奇怪)
var Report = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
displayOrder: DS.attr('integer'),
chart: DS.hasMany('chart', { async: true })
});
你没有归还ajax。
App.ApplicationAdapter= DS.ActiveModelAdapter.extend({
namespace: 'api',
ajax: function(url, type, hash) {
if (Ember.isEmpty(hash)) {
hash = {};
}
if (Ember.isEmpty(hash.data)) {
hash.data = {};
}
hash.data.uuid = $.cookie('uuid');
return this._super(url, type, hash);
}
});