2014-12-04 17 views
2

我試圖通過RESTAdapter獲取數據(下面的教程),我得到一個我不明白的錯誤。我失去了我的處理路由時出錯,工廠未定義

"Error while processing route: players.index" "factory is undefined" "Store<[email protected]://localhost:4200/assets/vendor.js:74981:1

任何人的想法?我需要安裝附加組件嗎?

路線/播放/ index.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function() { 
    return this.store.find('player'); 
    } 
}); 

型號/ player.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    finalScore: DS.attr('number'), 
    name: DS.attr('string'), 
    heightFormatted: DS.attr('string'), 
    heightCm: DS.attr('number'), 
    weightLb: DS.attr('number'), 
    weightKg: DS.attr('string'), 
    birthplace: DS.attr('string'), 
    birthdate: DS.attr('string'), 
    neoId: DS.attr('number'), 
    position: DS.attr('string'), 
    number: DS.attr('string'), 
    faults: DS.attr('number'), 
    stats: DS.belongsTo('stat') 
}); 

型號/ stat.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    points: DS.attr('number'), 
    assits: DS.attr('number'), 
    defr: DS.attr('number'), 
    ofr: DS.attr('number'), 
    steals: DS.attr('number'), 
    blocks: DS.attr('number'), 
    turnovers: DS.attr('number'), 
    fta: DS.attr('number'), 
    ftm: DS.attr('number'), 
    fga: DS.attr('number'), 
    fgm: DS.attr('number'), 
    lsa: DS.attr('number'), 
    lsm: DS.attr('number'), 
    minutes: DS.attr('number'), 
    isStarter: DS.attr('boolean'), 
    gamesPlayed: DS.attr('number'), 

    player: DS.belongsTo('player') 
}); 

適配器/ application.js中

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    host: 'http://localhost:3000', 
    namespace: 'api' 
}); 

JSON

{ 
    "players": [ 
     { 
      "neo_id": 3264, 
      "name": "Jeff Green", 
      "height_cm": 205, 
      "height_formatted": "6'9\"", 
      "weight_lb": 235, 
      "weight_kg": "106.8", 
      "position": "PF", 
      "number": "8", 
      "birthplace": "Cheverly, Maryland, USA", 
      "birthdate": "523843200", 
      "stats": { 
       "final_score": 344, 
       "games_played": 16, 
       "minutes": 34.5, 
       "points": 19, 
       "assits": 1.75, 
       "defr": 3.75, 
       "ofr": 1, 
       "steals": 0.94, 
       "blocks": 0.69, 
       "turnovers": 1.56, 
       "faults": 1.94, 
       "neo_id": 3264 
      } 
     }, 
     { 
      "neo_id": 3265, 
      "name": "Erik Murphy", 
      "height_cm": 208, 
      "height_formatted": "6'10\"", 
      "weight_lb": 230, 
      "weight_kg": "104.6", 
      "position": "PF", 
      "number": "-1", 
      "birthplace": "Lyon, France", 
      "birthdate": "656899200", 
      "stats": {} 
     } 
    ] 
} 
+0

的信息是不完整的。 – givanse 2014-12-04 14:03:00

+0

你想知道什麼? – tehAnswer 2014-12-04 14:05:21

+1

你的模型和你的適配器是什麼樣的? – Dhaulagiri 2014-12-04 14:41:04

回答

2

我無法重現您確切的錯誤,但與你分享的是我能得到它的工作工作通過做出這些改變。如果你的代碼有不同的地方留下評論,我會看看。

串行器/由於您使用的是自定義的主鍵(neo_id而不是ID),你可以改變的application.js

,在這裏,以及表明stats記錄嵌入players數據:

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs : { 
    stats: { embedded: 'always' } 
    }, 
    primaryKey : 'neo_id' 
}); 

Working JSBin

+0

這實際上有幫助!但是,我收到一個奇怪的錯誤:''你必須爲webapp @ model:stat包含一個'id',在一個傳遞的對象中''。但是......我已經說過,主鍵是neo_id,JSON對象與其父(玩家對象)具有相同的「neo_id」。任何想法? – tehAnswer 2014-12-04 20:48:37