Ember.js 添加余烬数据查询帮助器方法

Ember.js 添加余烬数据查询帮助器方法,ember.js,ember-data,json-api,Ember.js,Ember Data,Json Api,我正在使用带有JSON API后端的Ember API。API接受如下过滤器: /users?filter[simple][name]=John this.store.simpleQuery('users', { name: 'John' }); 现在,每当我想进行查询时,我都会这样做: this.store.query('users', { filter: { simple: { name: 'John' } } }); 通过添加一个工作方式如下的he

我正在使用带有JSON API后端的Ember API。API接受如下过滤器:

/users?filter[simple][name]=John
this.store.simpleQuery('users', { name: 'John' });
现在,每当我想进行查询时,我都会这样做:

this.store.query('users', {
  filter: {
    simple: {
      name: 'John'
    }
  }
});
通过添加一个工作方式如下的helper函数,可以避免这种冗长:

/users?filter[simple][name]=John
this.store.simpleQuery('users', { name: 'John' });
该函数将其参数直接传递给
query()
,只需将查询包装在
{filter:{simple:…}
中即可


这可能吗?我如何做到这一点?

那么,是什么阻止您在适配器中创建自己的方法来实现这一点呢

// ... your adapter code 

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

// ...

您需要扩展默认存储。将以下内容添加到
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' });