Javascript EmberJS:自定义相关模型的REST URL
在报告中,它提到了这一点: 适配器是了解特定服务器的对象 后端,负责将请求和更改转换为 记录到对服务器的相应调用中 例如,如果您的应用程序要求使用ID的person记录 余烬数据应该如何加载呢?URL是/person/1还是/resources/people/1 在我的示例中,我有一个包含相关消息的用户模型。当Ember store为用户检索相关消息时,它会以/messages/?ids=18的形式生成一个查询,如下所示:Javascript EmberJS:自定义相关模型的REST URL,javascript,ember.js,adapter,Javascript,Ember.js,Adapter,在报告中,它提到了这一点: 适配器是了解特定服务器的对象 后端,负责将请求和更改转换为 记录到对服务器的相应调用中 例如,如果您的应用程序要求使用ID的person记录 余烬数据应该如何加载呢?URL是/person/1还是/resources/people/1 在我的示例中,我有一个包含相关消息的用户模型。当Ember store为用户检索相关消息时,它会以/messages/?ids=18的形式生成一个查询,如下所示: user = this.store.find('user', param
user = this.store.find('user', params.user_id);
user.get('messages');
我想用/users/2/messages/这样的URL加载这些消息
我查阅了Ember关于适配器的文档,没有找到任何具体实现此功能的方法。如何自定义URL?您可以创建一个消息适配器,为端点构建正确的URL
import Ember from 'ember';
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
find: function(store, type, id) {
return this.ajax(this.buildURL(type.typeKey, id), 'GET');
},
createRecord: function(store, type, record) {
var data = {};
var serializer = store.serializerFor(type.typeKey);
serializer.serializeIntoHash(data, type, record, { includeId: true });
return this.ajax(this.buildURL(type.typeKey, null), "POST", {data: data});
},
buildURL: function(type, id) {
var url = [],
host = Ember.get(this, 'host'),
prefix = this.urlPrefix(),
user_id = this.container.lookup('controller:user').get('id');
// append user and id to the url
url.push('users/' + user_id);
if (type) { url.push(this.pathForType(type)); }
if (id) { url.push(id); }
if (prefix) { url.unshift(prefix); }
url = url.join('/');
if (!host && url) { url = '/' + url; }
return url;
}
});
我希望这是有帮助的
干杯