javascript - Ember 数据 "Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined"

标签 javascript ruby-on-rails json ember.js

我已经在这个问题上停留了很长一段时间了。我已经在 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);
    }
});

http://emberjs.jsbin.com/OxIDiVU/678/edit

关于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/

相关文章:

ruby-on-rails - 如何修复 PG::ProgramLimitExceeded: ERROR?

json - 如何在 Blade View 中显示 JSON 数组?

javascript - 从数组中删除引号以充当函数(变量)

javascript - 在 Firefox OS 验证器中检测到 CSP 违规

javascript - 在 ARToolkit 中更改方形标记的默认边框粗细

ruby-on-rails - Heroku 是否支持 `rails dbconsole` ?

javascript - 使用PHP将JSON插入MySQL表

javascript - 如何使用 pentaho 从 pdf 中提取文本?

javascript - DOMMouseScroll、event.originalEvent.detail 始终返回 0

ruby-on-rails - 更改表的平均分组计算