admin管理员组

文章数量:1295306

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.

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.

Share asked Aug 3, 2013 at 9:07 dhilipsivadhilipsiva 3,7181 gold badge26 silver badges35 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 10

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'
});

Update

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'
});

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./a/14967337/472852

本文标签: javascriptTell emberjs to use different key for its model39s quotidquotStack Overflow