Get belongsTo ID without fetching record
ember-data, ember.js
Solution
This is now much easier with the ds-reference feature that was added to ember data. You can now do:
var authorId = post.belongsTo("author").id();
See http://emberjs.com/blog/2016/05/03/ember-data-2-5-released.html#toc_code-ds-references-code
Problem
I'm trying to fetch the belongsTo ID without fetching the actual record. My JSON API returns the ID for the belongsTo relation. I have the following models ``` App.Recipe = DS.Model.extend( title: DS.attr() ingredients: DS.hasMany('ingredient', async: true) ) App.Ingredient = DS.Model.extend( recipe: DS.belongsTo('recipe') product: DS.belongsTo('product', async: true) ) App.Product = DS.Model.extend( title: DS.attr() ) ``` This is my route: ``` App.RecipeIndexRoute = Ember.Route.extend( model: (args) -> @store.find('recipe', args.recipe_id) ) ``` This is my controller: I'm trying to find the product id within this controller. ``` App.RecipeIndexController = Ember.ObjectController.extend( hasRecipeInCart: null actions: toggleCart: -> @content.get('ingredients').then((ingredients) => # how do I get product id here, without lookup up the product relation? # this 'get' makes Ember call: /api/v1/products/1 # I simply want the product ID (in this case 1), without having to call the server again. ingredient.get('product').then((product) => product.id # => 1 ) ``` My JSON looks like this: HTTP GET: /api/v1/recipes/1 ``` { "recipe": { "id":1, "title":"Recipe 1", "ingredients":[2,1] } } ``` HTTP GET: /api/v1/ingredients?ids[]=2&ids[]=1 ``` { "ingredients": [ { "id":2, "recipe":1, "product":1 }, { "id":1, "recipe":1, "product":2 } ] } ```