2014-10-07 60 views
0

學習Ember,我試圖從服務器加載「博客文章」。我的路線工作正常,REST請求正確,我的服務器(node/express/mongoose)正確地返回數據。Ember數據「無映射」錯誤,儘管有一個正確命名的模型

然而,燼抱怨:

斷言失敗:你的服務器返回一個哈希用鑰匙頁,但你有沒有映射爲它

根據我的所有研究,這應該只是工作精細。

型號代碼:

App.Page = DS.Model.extend({ 
    slug: DS.attr('string'), 
    title: DS.attr('string'), 
    content: DS.attr('string') 
    }); 

路線的模型連接:

App.PageRoute = Ember.Route.extend({ 
    model: function(params){ 
    return this.store.find('page', {slug:params.slug}); 
    } 
}); 

當路由負載,這是來自服務器的JSON響應:

{ 
    "page":{ 
    "slug":"bbb", 
    "title":"bbb", 
    "content":"bbb" 
    } 
} 
+0

您的Json結果是否有ID字段? – Dhaulagiri 2014-10-07 22:58:32

+0

你能從你的代碼示例中創建jsbin原型嗎?我試圖自己構建它,但我無法重複該斷言錯誤。你可以把我的例子作爲你的實驗的基礎:http://emberjs.jsbin.com/mudeto/2/edit?html,js,output。順便說一下,我試圖揭示通過param(不是id)查找和通過ember-data中的id查找記錄(請參閱jsbin中的示例)之間的區別。 – Microfed 2014-10-07 23:01:33

+0

涼亭。運行'bower install ember-data'安裝版本0.14 ...''ember-data#0.0.14',但是你的例子使用的版本是'1.0.0-beta.10 + canary.30d6bf849b'。當我在本地使用時,我不再看到任何錯誤。我必須運行'bower install ember-data#1.0.0-beta.10' – helion3 2014-10-07 23:55:10

回答

0

有我的代碼有三個問題:

  • bower install ember-data沒有安裝最新版本的,我不得不使用
  • 使用this.store.find('page', {slug:'bbb'});顯然讓燼假設會有不止一個返回的記錄 - 因此它不接受任何單個記錄。我必須使用id語法來代替:return this.store.find('page', 'bbb');
  • 我曾經是正確的「查詢」的一個記錄,我必須確保記錄JSON有一個id屬性:{"page":{"id":"54345c895b24bfc4df34cf86","slug":"bbb","title":"bbb","content":"bbb"}}

一旦我解決了所有三個這些問題,我看到我的單個記錄正確返回。