【问题标题】:Customize query string generated by RESTAdapter/Store自定义 RESTAdapter/Store 生成的查询字符串
【发布时间】:2014-05-17 13:11:01
【问题描述】:

当我像这样在商店中拨打.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

【问题讨论】:

  • 那我猜你得自己写RESTAdapter
  • ...这是我的问题。我要覆盖哪些方法?正如我在帖子中提到的,我浏览了源代码并没有看到要更改哪些方法。
  • 请在您的问题中链接来源。
  • 我还没有自己的代码,因为我还不知道要覆盖什么,这是我的问题。
  • 我的意思是从这里开始:github.com/emberjs/ember.js

标签: javascript ember.js ember-data


【解决方案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);
  },
});

【讨论】:

  • 嗯,这很尴尬......甚至没有想到:D
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 2011-08-28
  • 2013-08-14
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多