Wojciech Bednarski
Wojciech Bednarski

Reputation: 6373

How to use two different adapters at the same time in Ember.js application?

I'm using basic adapter for one API:

App.Store = DS.Store.extend({
    revision: 12,
    adapter: DS.BasicAdapter.create()
});

Lets say I need to retrieve some data from an other service but using REST API:

App.Store2 = DS.Store.extend({
    revision: 12,
    adapter: DS.RESTAdapter.create()
});

How to use store2 then? Or is there another approach to solve issue like this?

Upvotes: 5

Views: 2831

Answers (3)

anthonygore
anthonygore

Reputation: 4967

You can add two different adapters, no need to create multiple stores.

For Ember 2:

Model-specific adapters can be created by putting your adapter class in an app/adapters/ + model-name + .js file of the application.

Source: DS.Adapter Class

Upvotes: 3

snw
snw

Reputation: 303

This is how I made the above example work, note Im using ember-cli. Instead of creating my store with the DS.RESTAdapter.create(), or in my case, Im using DS.LSAdapter, I create my store in a initializer like this:

app.LsStore = DS.Store.extend({
  adapter: '-ls',
});

app.register('store:lsstore', app.LsStore);
app.register('adapter:-ls', DS.LSAdapter);

This basically registers a lsstore and a adapter:-ls on the container. Then I can inject my store into the application's route or controller, and this will try to find the adapter using adapter:-ls.

Upvotes: 0

intuitivepixel
intuitivepixel

Reputation: 23322

When you need to use a different Store, define your Store and then specify the Model you want to retrieve:

App.Store = DS.Store.extend({
  revision: 12,
  adapter: DS.BasicAdapter.create()
});

App.store2 = DS.Store.create({
  revision: 12,
  adapter: DS.RESTAdapter.create()
});

// retrieving from custom store
var myModelObject = App.store2.find(App.MyDifferentModel, 1);

// retrieving from defaultStore is implicit for the Models defined
var post = App.Post.find(1);

hope it helps

Upvotes: 2

Related Questions