自定义RESTAdapter / Store生成的查询字符串

时间:2014-05-17 03:32:32

标签: javascript ember.js ember-data

当我在商店进行.find电话时:

this.store.find('user', { age: 24 });

它生成请求:

GET /user?age=24

我无法弄清楚如何自定义从该请求生成的查询参数。我查看了RESTSerializer和RESTAdapter的源代码,但没有看到任何会生成该查询字符串的内容。

我想让Ember产生类似的东西:

GET /user?details=age eq 24

而不是默认值:

GET /user?age=24

这可能吗?


与来源的链接:

DS.Store:https://github.com/emberjs/data/blob/v1.0.0-beta.6/packages/ember-data/lib/system/store.js#L44

DS.RESTAdapter:https://github.com/emberjs/data/blob/v1.0.0-beta.6/packages/ember-data/lib/adapters/rest_adapter.js#L13

DS.RESTSerializer:https://github.com/emberjs/data/blob/v1.0.0-beta.6/packages/ember-data/lib/serializers/rest_serializer.js#L15

1 个答案:

答案 0 :(得分:1)

只需将您的请求更改为this.store.find('user', {details:'age eq 24'});

即可

您还需要覆盖pathForType才能使user单数

App.UserAdapter = DS.RESTAdapter.extend({
  pathForType: function(type) {
    var camelized = Ember.String.camelize(type);
    return camelized; //Ember.String.pluralize(camelized);
  },
});