我的服务器API有一个路径'/ user',它根据客户端的身份验证cookie获取SINGLE用户记录,而不是ID。
如何在Ember Data中进行此调用?
答案 0 :(得分:1)
覆盖用户适配器上的pathForType
和buildUrl
:
App.UserAdapter= DS.RESTAdapter.extend({
pathForType: function(type) {
var decamelized = Ember.String.decamelize(type);
//return Ember.String.pluralize(decamelized);
return decamelized;
},
buildURL: function(type, id) {
var url = [],
host = get(this, 'host'),
prefix = this.urlPrefix();
if (type) { url.push(this.pathForType(type)); }
if (id!==-1) { url.push(id); } // This will exclude the id for this request
if (prefix) { url.unshift(prefix); }
url = url.join('/');
if (!host && url) { url = '/' + url; }
return url;
},
});
然后使用
this.store.find('user', -1);
答案 1 :(得分:0)
我不知道你想如何获取用户,但不管怎样,你都想创建自己的适配器。您可能希望覆盖一种或多种查找方法(find
,findAll
,findMany
,findQuery
),具体取决于您的具体情况。首先检查类型是否为user
。如果是,请实现您的自定义逻辑。如果没有,只需在你扩展的适配器上调用super方法。
如果您向我提供有关您希望如何访问用户模型的更多信息,我可能会提供更多帮助。
编辑:您似乎只需要覆盖buildURL
功能。您可能必须返回的不仅仅是/user
,例如主机和前缀,但这应该为您提供要点。检查REST适配器的the source以查看默认情况下它们是如何执行的。
App.ApplicationAdapter = DS.RESTAdapter.extend({
buildUrl: function(type, id) {
if (type.typeKey === 'user' && id === 1) {
return '/user';
} else {
return this._super.buildUrl.apply(this, arguments);
}
}
});