Reputation: 3718
I am stuck in a situation where I shouldn't return id
field in the API endpoint. I need to tell ember to use slug
field for / instead of id
.
I tried DS.RESTAdapter.map('App.Post', id: {key: 'slug'})
. While this works perfectly fine for App.Post.find("a-slug-name")
, It messes up for App.Post.find()
resulting in adding a new model every time it is called. And also assigning id
to null.
So how should I do this.
Upvotes: 5
Views: 3670
Reputation: 23322
You need to specify the attribute that should be used as the primaryKey
in your Adapter. If you want the slug
property to serve as your Post
model id
, define the primaryKey
on your Adapter like this:
DS.RESTAdapter.map('App.Post', {
primaryKey: 'slug'
});
As of Ember-data version 1.0.0-beta.7 canary
, you need to do this instead of the above snippet:
App.PostSerializer = DS.JSONSerializer.extend({
primaryKey: 'slug'
});
Upvotes: 10
Reputation: 256
I'm not an ember pro, but I had wanted to use a slug instead of an ID recently and did this, wondering if this what you're after? https://stackoverflow.com/a/14967337/472852
Upvotes: 0