2014-09-18 4 views
1

J'ai un modèle avec un ensemble de données Fixtures, donc pas de backend impliqué ici. Pour le modèle, j'ai 22 enregistrements de données. Lorsque je l'interroge pour la première fois dans mon IndexRoute, les 22 enregistrements de données sont renvoyés. Pas de problème ici.Ember Data Store Rechercher renvoie le contenu vide lors du deuxième appel

Lorsque je quitte la route et que je reviens plus tard, le point d'accès au modèle de mon IndexRoute est à nouveau appelé, mais cette fois, la même requête ne renvoie pas de données.

Mon crochet modèle ressemble à:

model: function() { 
    var placeId = 0; 

    console.log('Index Route: Model Hook'); 
    console.log('Getting hints for place ' + placeId); 

    this.get('store').find('hint', { place: placeId }) 
     .then(
      function (hints) { 
       console.log('Found hints', hints.get('content')); 
      } 
     ); 

    return this.get('store').find('hint', { place: placeId }); 
} 

Comme vous pouvez le voir, à des fins de démonstration, je toujours avec id Indicateurs de requête lieu égal à zéro. Comme déjà dit, la première fois qu'il renvoie les données (et je peux voir les données dans l'inspecteur Chrome Ember), mais la deuxième fois que j'entre cette route ne retourne pas les données (que je sais est là-bas).

Edit: Mon modèle de pointe ressemble fondamentalement

App.Hint = DS.Model.extend({ 
    title: DS.attr('string'), 
    // some basic boring attributes 
    place: DS.belongsTo('place', { async: true }) // Association with my Place Model 
}); 

App.Place = DS.Model.extend({ 
    title: DS.attr('string'), 
    // some more attributes 
    hints: DS.hasMany('hint', { async: true }) 
}); 

Ainsi, la requête {place: placeId} obtient simplement tous les conseils qui ont une association avec un lieu spécifique. Le problème n'est pas que la requête ne fonctionne pas - cela fonctionne la première fois que la route d'index est déclenchée (et cela fonctionne comme je l'espère). Le problème est que tous les appels suivants de route d'index, et tous les autres emplacements qui tentent d'accéder aux conseils, ne fonctionnent plus et renvoient toujours un ensemble vide.

Répondre

0

Je suis un peu confus au sujet de ce que { place: placeId } est censé faire, puisque je ne suis pas sûr si fixtureAdapter peut imiter les requêtes du serveur (jamais essayé).

Cela dit cependant, si vous voulez que votre itinéraire pour revenir toujours tous les « trucs » dans vos données de fixation, tout ce que vous avez besoin de faire est la suivante:

return this.store.find('hint'); 

Note: il vous suffit d'appeler une fois .

si cela ne fonctionne toujours pas. essayez de poster à quoi ressemblent vos données et votre adaptateur.

+0

Je mis à jour ma question pour être plus clair sur mes modèles, leur association et ce que je suis en train de réaliser. – akohout

1

Enfin j'ai trouvé la réponse. Le problème semble être lié à la recherche des enregistrements d'indices via l'association belongsTo avec mes adresses.

Quoi qu'il en soit, je trouve ce post Find record from belongsTo association in Ember.js et voici comment la solution réelle ressemble:

model: function() { 
    var placeId = 0; 

    return this.store.find('place', placeId) 
     .then(function (place) { 
      return place.get('hints'); 
     }) 
     .then(function (hints) { 
      return hints; 
     }); 
}, 
Questions connexes