Javascript “余烬数据”;断言失败:错误:断言失败:来自findAll的响应必须是数组,而不是未定义的";

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: [

我已经在这个问题上纠缠了很长一段时间了。我已彻底研究了stackoverflow的问题,但未能找到解决方案

我正在尝试使用ember数据和rails API将JSON数据加载到我的应用程序存储中。我正在使用ember cli

我继续得到的错误是:
断言失败:错误:断言失败:来自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修复了这个问题!非常感谢!