添加Ember Data查询助手方法

时间:2015-08-31 00:27:36

标签: ember.js ember-data json-api

我使用Ember API和JSON API后端。 API接受以下过滤器:

/users?filter[simple][name]=John

现在,每当我想进行查询时,我都会这样做:

this.store.query('users', {
  filter: {
    simple: {
      name: 'John'
    }
  }
});

通过添加一个如下所示的辅助函数来避免这种冗长会很好:

this.store.simpleQuery('users', { name: 'John' });

该函数会将其参数直接传递给query(),只需将查询包装在{ filter: { simple: ... } }中。

这可能吗?我该怎么做?

2 个答案:

答案 0 :(得分:1)

那么是什么阻止你在适配器中创建自己的方法呢?

// ... your adapter code 

simpleQuery: function(modelName, query) {
    return this.store.query('users', {
        filter: {
            simple: {
                name: 'John'
            }
        }
    });
}

// ...

答案 1 :(得分:0)

您需要扩展默认商店。将以下内容添加到app/services/store.js

import DS from 'ember-data';

export default DS.Store.extend({
  simpleQuery(modelName, query) {
    return this.query(modelName, {
      filter: { simple: query }
    });
  },

  simpleQueryRecord(modelName, query) {
    return this.queryRecord(modelName, {
      filter: { simple: query }
    });
  }
});

你能够做到这一点:

this.store.simpleQuery('users', { name: 'John' });
this.store.simpleQueryRecord('users', { email: 'john@example.com' });