Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ember-data "Cannot call method 'hasOwnProperty' of undefined"

I have the following Ember.js model:

Filters.Milestone = DS.Model.extend({
    id: DS.attr('string'),
    name: DS.attr('string')
});

In my app.js I have the following settings for the model (loaded prior to the model):

Filters.MilestoneSerializer = DS.RESTSerializer.extend();
Filters.MilestoneAdapter = DS.RESTAdapter.extend({
    namespace: "ember"
});

When loading the page, an AJAX call to the milestones list is done. The following JSON is returned:

{
    "milestones": [
        {
            "id": "1",
            "name": "Test Milestone #1"
        }
    ]
}

When the JSON is loaded, the following error is returned:

TypeError: Cannot call method 'hasOwnProperty' of undefined
    at e (http://sandbox.local/ember/js/libs/ember-data.js:8:30934)
    at null.<anonymous> (http://sandbox.local/ember/js/libs/ember-data.js:8:31181)
    at ComputedPropertyPrototype.set (http://sandbox.local/ember/js/libs/ember-1.4.0.js:4903:18)
    at new Class (http://sandbox.local/ember/js/libs/ember-1.4.0.js:12652:18)
    at Function.Mixin.create.create (http://sandbox.local/ember/js/libs/ember-1.4.0.js:13104:12)
    at Ember.Object.extend.buildRecord (http://sandbox.local/ember/js/libs/ember-data.js:10:2880)
    at Ember.Object.extend.recordForId (http://sandbox.local/ember/js/libs/ember-data.js:9:31214)
    at Ember.Object.extend._load (http://sandbox.local/ember/js/libs/ember-data.js:10:2048)
    at Ember.Object.extend.push (http://sandbox.local/ember/js/libs/ember-data.js:10:2450)
    at null.<anonymous> (http://sandbox.local/ember/js/libs/ember-data.js:10:2701)

What am I doing wrong? I have tried following the same structure as https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/adapter/rest_adapter_test.js#L465. If I rename the milestones key it says that no model could be found for the new key, so something must be right :-)

Thanks in advance.

Edit

The route that I use is the following:

Filters.FiltersRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('milestone')
    }
});

If this.store.find('milestone') is not called the error doesn't occur. Also, if I use the FixtureAdapter instead of the RESTAdapter, the error still occurs. So it seems that this might be related to the model, not the data source.

like image 512
phidah Avatar asked Nov 18 '25 22:11

phidah


1 Answers

The problem was caused by the id attribute in the model. Apparently this should not be part of the model.

like image 165
phidah Avatar answered Nov 20 '25 12:11

phidah



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!