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"
}
}
答
有我的代码有三个问题:
-
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"}}
一旦我解决了所有三个这些问题,我看到我的单个记录正确返回。
您的Json结果是否有ID字段? – Dhaulagiri 2014-10-07 22:58:32
你能从你的代码示例中创建jsbin原型吗?我试图自己构建它,但我无法重复该断言错误。你可以把我的例子作为你的实验的基础:http://emberjs.jsbin.com/mudeto/2/edit?html,js,output。顺便说一下,我试图揭示通过param(不是id)查找和通过ember-data中的id查找记录(请参阅jsbin中的示例)之间的区别。 – Microfed 2014-10-07 23:01:33
凉亭。运行'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