Ember-data "Assertion Failed: Erreur: Assertion Failed: la réponse d'une findAll doit être une matrice, non définie"

J'ai été coincé sur cette question depuis un certain temps maintenant. J'ai longuement étudié le problème sur stackoverflow et j'ai été incapable de trouver une solution.

J'essaie de charger des données JSON dans mon magasin d'applications avec des données de brouillard et une API de rails. J'utilise Ember-Cli.

L'erreur que je continue d'obtenir est: Assertion Failed: Error: Assertion Failed: The response from a findAll must be an Array, not undefined

L'application se compose de plusieurs rapports qui ont chacun des tableaux. Le serveur déclenche une demande à l'API (avec un uuid collé en tant que chaîne de requête) et reçoit la réponse suivante de 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 ] } ] } 

C'est l'itinéraire pour les rapports:

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

Et mes modèles:

 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() }); 

J'utilise ActiveModelAdapter et 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); } }); 

Et sérialiseur:

 export default DS.ActiveModelSerializer.extend(); 

Je suis tellement frustré en ce moment. Le débogueur Ember n'est pas très utile. Toute aide serait très appréciée.

Faites-moi savoir si plus d'informations seraient utiles.

Je suis plutôt sûr que cela doit être charts_ids au lieu de chart_ids (notez le diagramme s after) dans la réponse JSON pour les rapports.

Ou changez votre hasMany en graphique (bien que cela semble étrange)

  var Report = DS.Model.extend({ name: DS.attr('string'), description: DS.attr('string'), displayOrder: DS.attr('integer'), chart: DS.hasMany('chart', { async: true }) }); 

Vous ne retournez pas l'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