我的Ember应用程序与API(通过DS.ActiveModelAdapter适配器)交互,该API使用JSON响应GET "/api/v1/users?username=mcclure.rocio"
:
{
"user": {
"id": 5,
"name": "Rocio McClure",
"username": "mcclure.rocio",
"email": "rocio.mcclure@yahoo.com"
}
}
我的路由器是:
Router.map(function() {
this.route("login");
this.route("user", {path: "user/:username"}, function() {
this.route("profile");
});
});
所以我有像http://localhost:4200/user/mcclure.rocio
这样的路线,它是用户的总结。
问题是在路线中加载了正确的模型:
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function(params) {
return this.store.find('user', { username: params.username })
}
});
我的Ember检查员声明加载的模型是一个空的 DS.AdapterPopulatedRecordArray 。这是因为findQuery(实际上称为我提供查询对象)期望在我的API返回单个用户 JSON对象时获取JSON数组,因此它将其转换为空数组。
但是this.store.find('user', { username: params.username })
会为我的API构建正确的请求,但是如何让商店接受API响应并将其作为模型提供给我的路线?
请注意: 如果我的API返回一个数组,则可以执行以下操作:
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function(params) {
return this.store.find('user', { username: params.username }).then(function(data){
return data.objectAtContent(0);
});
}
});
但是,我不想修改它。