我已经在这个问题上停留了很长一段时间了。我已经在 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:
应用适配器:
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 调试器不是很有帮助。任何帮助将不胜感激。
如果更多信息有帮助,请告诉我。
最佳答案
我很确定在报告的 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);
}
});
关于javascript - Ember 数据 "Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24291477/