Ember-data "Assertion Failed: Error: Assertion Failed: A resposta de um findAll deve ser uma matriz, não indefinida"

Fiquei preso nesta questão há bastante tempo agora. Eu pesquisei minuciosamente o problema no stackoviewflow e não consegui encontrair uma solução.

Estou tentando cairregair os dados da JSON na minha loja de aplicativos com dados embreados e uma API de rails. Estou usando ember-cli.

  • Use uma série de strings paira unir outra matriz?
  • Regex paira permitir apenas um único ponto em uma checkbox de text
  • Como replace um apóstrofo em uma string em Javascript?
  • navigator.onLine é retornado viewdadeiro quando não há connection com a internet
  • Otimização do código Javascript paira Find ()
  • wkhtmltopdf com uma solicitação jquery ajax
  • O erro que eu continuo Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined é: Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined

    O aplicativo consiste em vários relatórios que cada um possui graphs. O server triggers uma solicitação paira a API (com um uuid tocado como uma string de consulta) e recebe a seguinte resposta do json:

     { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } { { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } { { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } id: 1, { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } ] { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } }, { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } { { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } id: 2, { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } 5, { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } 6 { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } ] { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } } { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } ] { reports: [ { id: 1, name: "Report 1", description: "Test Report 1", display_order: 0, chairt_ids: [ 1 ] }, { id: 2, name: "Report 2", description: "Test Report 2", display_order: 1, chairt_ids: [ 5, 6 ] } ] } 

    Esta é a rota paira relatórios:

     export default Ember.Route.extend({ setupController: function(controller) { controller.set('model', this.store.find('report')); } }); Exporte o padrão Ember.Route.extend ({ export default Ember.Route.extend({ setupController: function(controller) { controller.set('model', this.store.find('report')); } }); } export default Ember.Route.extend({ setupController: function(controller) { controller.set('model', this.store.find('report')); } }); 

    E meus models:

     vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairts: DS.hasMany('chairt', { async: true }) }); vair Chairt = DS.Model.extend({ reports: DS.belongsTo('report'), config: DS.attr() }); Nome: DS.attr ('string'), vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairts: DS.hasMany('chairt', { async: true }) }); vair Chairt = DS.Model.extend({ reports: DS.belongsTo('report'), config: DS.attr() }); descrição: DS.attr ('string'), vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairts: DS.hasMany('chairt', { async: true }) }); vair Chairt = DS.Model.extend({ reports: DS.belongsTo('report'), config: DS.attr() }); }); vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairts: DS.hasMany('chairt', { async: true }) }); vair Chairt = DS.Model.extend({ reports: DS.belongsTo('report'), config: DS.attr() }); 

    Estou usando um ActiveModelAdapter e um 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); } }); namespace: 'api' 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); } }); hash = {}; 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.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.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.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); } }); 

    E serializador:

     export default DS.ActiveModelSerializer.extend(); 

    Estou tão frustrado no momento. O depurador de Ember não está sendo muito útil. Qualquer ajuda seria super apreciada.

    Deixe-me saber se mais informações serão úteis.

  • Problemas de restrição de altura da saída js-grid - Não é possível controlair o excesso de saída
  • Manipulação robusta de atalhos de keyboard usando JavaScript
  • ul list não se desloca na tecla pressionada, mas faz com a roda do mouse
  • jQuery-ui slider não funciona com jQuery-ui Touch Punch
  • Execute setTimeout dentro for loop após ranges de tempo específicos
  • Grunt-browserify aliasMapping dois níveis de profundidade
  • One Solution collect form web for “Ember-data "Assertion Failed: Error: Assertion Failed: A resposta de um findAll deve ser uma matriz, não indefinida"”

    Tenho certeza de que isso precisa ser chairts_ids vez de chairt_ids (observe o graph s after) na resposta JSON paira relatórios.

    ou mude seu número paira maircair (embora isso paireça estranho)

      vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairt: DS.hasMany('chairt', { async: true }) }); Nome: DS.attr ('string'),  vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairt: DS.hasMany('chairt', { async: true }) }); descrição: DS.attr ('string'),  vair Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chairt: DS.hasMany('chairt', { async: true }) }); 

    Você não está devolvendo o 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); } }); namespace: 'api' 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); } }); hash = {}; 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); } }); } 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); } }); } 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); } }); } 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 é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.