Skip to content Skip to sidebar Skip to footer

Why Are These Records Not Stored In Cache?

I would like to cache my records once they are received, but I can't figure out how. According to the Documentation you can just call this.store.push('model', record), but it doesn

Solution 1:

this.store.find('type') will always make a call to the server for records. If you only want to make a call to the server once do it in the ApplicationRoute and then instead of using find use the all filter inside of the route that's hit multiple times.

Pd.ApplicationRoute = Em.Route.extend({
  model: function(params){

    returnEm.RSVP.hash({
       product: this.store.find('product'),
       somethingElse: otherPromise
    })
  }
});

Pd.ProductRoute = Em.Route.extend({
  model: function(params){
    returnthis.store.all('product');
  }
});

If you just want to prep the store with your products, you don't even need to return it, or use it in the app route

Pd.ApplicationRoute = Em.Route.extend({
  model: function(params){
    this.store.find('product');
    return {foo:'bar'}; // or return nothing, it doesn't matter
  }
});

Lazy loading the models

App.ProductRoute = Ember.Route.extend({
  hasPreLoaded: false,
  model: function() {
    if(this.get('hasPreLoaded')){
      returnthis.store.all('product');
    } else {
      this.toggleProperty('hasPreLoaded');
      returnthis.store.find('product');
    }
  }
});

Example

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

You don't define the primary key on the adapter, it goes on the serializer

Pd.ProductSerializer = DS.RESTSerializer.extend({
  primaryKey: 'nid'
});

The cache no longer lives there, it lives in this.store.typeMapFor(Pd.Product) or this.store.typeMaps.

The site is still referencing an older version of ember data until ember data 1.0 is released, I'll assume you're using 1.0 beta version. This document is more up to date https://github.com/emberjs/data/blob/master/TRANSITION.md

Post a Comment for "Why Are These Records Not Stored In Cache?"