0
votes

I'm getting the following error on my first Ember.js App with a Node.JS backend:

Intermediate-transitioned into 'loading' ember-1.5.0.js:3521
Error while loading route: TypeError: Cannot set property 'store' of undefined
at DS.Store.Ember.Object.extend.modelFor (http://127.0.0.1:5555/js/libs/ember-data.js:2986:31)
at DS.Store.Ember.Object.extend.recordForId (http://127.0.0.1:5555/js/libs/ember-data.js:2437:29)
at deserializeRecordId (http://127.0.0.1:5555/js/libs/ember-data.js:3355:35)
at http://127.0.0.1:5555/js/libs/ember-data.js:3333:21
at http://127.0.0.1:5555/js/libs/ember-data.js:7117:30
at http://127.0.0.1:5555/js/libs/ember-1.5.0.js:3428:30
at Object.OrderedSet.forEach (http://127.0.0.1:5555/js/libs/ember-1.5.0.js:3271:24)
at Object.Map.forEach (http://127.0.0.1:5555/js/libs/ember-1.5.0.js:3426:22)
at Function.DS.Model.reopenClass.eachRelationship (http://127.0.0.1:5555/js/libs/ember-data.js:7116:50)
at normalizeRelationships (http://127.0.0.1:5555/js/libs/ember-data.js:3319:18) ember-1.5.0.js:3521
Transition #0: games: transition was aborted 

The following json gets returned by /games

{
  "games": [
    {
      "serverSeedHash": "5eb59053dcb5810322e367245f631a65589ddf7bbe950d2986a43a5f376312ef",
      "id": 2,
      "serverSeed": null,
      "table": [
        1
      ],
      "amountOfPlayers": 2,
      "prizePool": 39600
    }
  ],
  "tables": [
    {
      "id": 1,
      "minimumPlayers": 2,
      "maximumPlayers": 100,
      "cardPrice": 1000,
      "games": [
        2
      ]
    }
  ]
}

My complete Ember.js app.js looks like this:

window.App = Ember.Application.create({
    LOG_TRANSITIONS: true,
    LOG_TRANSITIONS_INTERNAL: true
});

App.Router.map(function () {
    this.route('games', { path: '/' });
});

App.Game = DS.Model.extend({
    serverSeedHash: DS.attr(),
    serverSeed: DS.attr(),
    amountOfPlayers: DS.attr(),
    prizePool: DS.attr(),
    table: DS.belongsTo('table')
});

App.Table = DS.Model.extend({
    minimumPlayers: DS.attr(),
    maximumPlayers: DS.attr(),
    games: DS.hasMany('game')
});


App.GamesRoute = Ember.Route.extend({
    model: function () {
        return this.store.find('game');
    }
});

Does anyone have any idea why I'm getting an error? Please note this is my first time toying with Ember.JS. I've been breaking my had over this for the past days.

1

1 Answers

1
votes

In your game model, you're defining table as a belongsTo relationship, so Ember is expecting it to be singular where you're sending it an array. Change your object to this, and it should work:

{
  "games": [
    {
      ...
      "table": 1,
      ...
    }
  ],
  "tables": [
    ...
  ]
}