Tim Sutcliffe
Tim Sutcliffe

Reputation: 185

With ember.js, how do I prevent individual queries for each related object

I have three models, syndicates, users and activities. Each syndicate has many activities, and each activity has one user. My models look like this:

App.Syndicate = DS.Model.extend
  activities: DS.hasMany('activity', async: true)
  name: DS.attr 'string'

App.Activity = DS.Model.extend
  syndicate: DS.belongsTo('syndicate')
  user: DS.belongsTo('user', async: true)

App.User = DS.Model.extend
  activities: DS.hasMany('activity', async: true)

I display the activities using

article#lead
  h1= model.name

each activity in model.activities

  p
    = activity.id
  p
    = activity.user.name

Looking at syndicate/1, I get a list of the activities for that syndicate, with a user name for each activity, but each user is triggering a separate request to the api - very slow and expensive. I want to know if I cant request the users in a single query.

My reading suggested I could simply set 'coalesceFindRequests' to true, but this didn't work for me

DS.RESTAdapter.reopen
  namespace: 'api/v1'
  coalesceFindRequests: true

App.Store = DS.Store.extend(
  serializer: DS.RESTSerializer.extend
  primaryKey: (type) ->
    '_id';
)
App.ApplicationAdapter = DS.ActiveModelAdapter.extend()

My route

App.SyndicateRoute = Ember.Route.extend
  model: (params) ->
    console.log params.syndicate_id
    @store.find 'syndicate', params.syndicate_id

Any pointers on what I'm doing wrong?. I'm very new to ember.

Thanks :)

Upvotes: 0

Views: 79

Answers (1)

Wojciech Wieroński
Wojciech Wieroński

Reputation: 457

You can, side load the related data for the aggregate.

http://emberjs.com/guides/models/the-rest-adapter/

Upvotes: 1

Related Questions