Javascript “余烬数据”;断言失败:错误:断言失败:来自findAll的响应必须是数组,而不是未定义的";
我已经在这个问题上纠缠了很长一段时间了。我已彻底研究了stackoverflow的问题,但未能找到解决方案 我正在尝试使用ember数据和rails API将JSON数据加载到我的应用程序存储中。我正在使用ember cli 我继续得到的错误是:Javascript “余烬数据”;断言失败:错误:断言失败:来自findAll的响应必须是数组,而不是未定义的";,javascript,ruby-on-rails,json,ember.js,Javascript,Ruby On Rails,Json,Ember.js,我已经在这个问题上纠缠了很长一段时间了。我已彻底研究了stackoverflow的问题,但未能找到解决方案 我正在尝试使用ember数据和rails API将JSON数据加载到我的应用程序存储中。我正在使用ember cli 我继续得到的错误是:断言失败:错误:断言失败:来自findAll的响应必须是数组,而不是未定义的 该应用程序由多个报表组成,每个报表都有图表。服务器向API发出请求(将uuid作为查询字符串附加),并接收以下json响应: { reports: [
断言失败:错误:断言失败:来自findAll的响应必须是数组,而不是未定义的
该应用程序由多个报表组成,每个报表都有图表。服务器向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.ActiveModelSerializer.extend();
应用程序适配器:
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();
我现在很沮丧。余烬调试器不是很有帮助。任何帮助都将不胜感激
让我知道是否有更多的信息会有帮助。我非常确定这需要是报告JSON响应中的
图表ID
,而不是图表ID
(注意图表后面的s
)
或者将你的hasMany更改为图表(尽管这看起来很奇怪)
你不能退回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);
}
});
当服务器请求图表信息时,它的响应是什么?或者它没有这样做?在我单击报表之前,它不应该请求任何图表数据。所以它没有提出请求。你没有在模板中引用它或其他什么,是吗?我在图表模板中,但即使在没有图表模板的a页面上,我仍然会收到错误。如果有帮助的话,我也可以提供chart json响应。我完全错过了适配器,您重写了ajax方法,但未能从super返回值。不幸的是,我仍然收到相同的错误。查看ember的文档,ActiveModelAdapter似乎应该处理rails到ember的任何不一致之处。这会包括在内吗?或者这是将来需要注意的事情吗?对不起,我跑去吃午饭了,你真的有整数转换吗?返回ajax修复了这个问题!非常感谢!