假设我想要/users/JoshSmith
这样的网址,以获得最大的可读性/可共享性。
我设置了Router
:
this.resource('user', path: '/users/:username')
我的路线:
var UserRoute = Ember.Route.extend({
model: function(params) {
debugger
return this.store.find('user', { username: params.username });
}
});
但是这个findQuery
函数实际上返回一个数组,因为它正在调用/users?username=
而不是像我通常那样调用/users/:username
。
答案 0 :(得分:0)
正如此处所示:http://discuss.emberjs.com/t/find-by-different-property/2479
只需覆盖路线上的序列化。
var UserRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('user', { username: params.username });
},
serialize: function(model) {
return { username: model.get('username') };
}
});
这将替换默认值,如下所示:
serialize: function(model) {
// this will make the URL `/posts/12`
return { post_id: model.id };
}
来源:http://emberjs.com/api/classes/Ember.Route.html#method_serialize
答案 1 :(得分:0)
我也有同样的问题,findQuery
总是返回一个记录数组。我解决这个问题的方法是简单地将路由器中的model
挂钩更改为
model: function(params) {
return this.store.find('user', { username: params.username }).then(function(users) {
return users.get('firstObject');
});
}