Ember数据“无映射”错误,尽管有一个正确命名的模型

问题描述:

学习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

有我的代码有三个问题:

  • 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"}}

一旦我解决了所有三个这些问题,我看到我的单个记录正确返回。