Finding record by custom primaryKey


Hello. My model is defined as follow:

App.User = DS.Model.extend({
  primaryKey: 'username',
  username: DS.attr('string'),
  name: DS.attr('string')

My custum Adapter map:'App.User', {
  primaryKey: 'username',
  username: DS.attr('string'),

I am testing this model out by typing on console:

var r = MyTalk.User.find("user_1");
console.log( r.serialize() );

>> Object {username: null, name: null ..... all null}

Also tested:


But this is doing a remote request. I read that Ember Data does allow you to find records via attributes other than the ID.

So what I am doing wrong in telling Ember data my custom primaryKey?

Thanks in advance!


I had a similar issue. Despite what the documentation and everyone else said, this was the only thing that worked for me. I’m on Ember Data 0.13.

App.SocketAdapter.configure('App.User', {
  primaryKey: 'username'

Note: It’s the configure method, not map.

I don’t completely understand what’s going on under the hood and the difference between the 3: defining primaryKey in your model, defining it with map, and defining it with configure. Can anyone explain what the 3 things do specifically?


How about with ember-data 1.0.0-beta.6?


+1 for how about doing this configure thing with ember-data-1.0.0-beta.6 .configure apparently doesn’t exist anymore and raises:

Uncaught TypeError: Object function () { if (!wasApplied) { Class.proto(); // prepare prototype... } o_defineProperty(this, GUID_KEY, undefinedDescriptor); o_defineProperty(this, '_super', undefinedDescriptor); var m = met...<omitted>...e' (anonymous function)


wycats explained it pretty concisely here: