在我的应用程序中,我希望路由到资源“day”,像这样“sampledomain.com/day/1-3-2014”。
我这样定义:
this.resource('day', { path: '/day/:day_date' });
我对该路线的模型钩子如下所示:
model: function(params) {
return this.store.find('day', params.day_date);
},
我的API响应如下:
{"day":{"id":"3","dayDate":"2014-03-01","openTime":null,"closeTime":null}}
出于某种原因,我在商店里收到两条记录。一个是正确的,一个id设置为URL(1-3-2014)中的动态部分,其余的模型数据为空。
我不知道我做错了什么。
答案 0 :(得分:2)
您应该使用findQuery
并返回promise resolve handler中的第一条记录:
App.DayRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('day', { date: params.day_date }).then(function(days) {
return days.toArray()[0];
});
}
});
答案 1 :(得分:0)
您假装日期是ID,因此Ember Data正在根据标识1-3-2014
构建记录,然后您的服务器返回ID为3
的记录。所以这就引出了一个问题,即id?
如果dayDate可以是id,那么记录的primaryKey应该改变,如果不能,那么你真的应该使用findQuery
(或找到一个对象)。
return this.store.find('day', {dayDate: params.day_date});
这会将您的结果集更改为集合,因为您不是通过id,它不再保证是单个实例。
此外,获取请求将是不同的