访问ember-cli中的商店查找器_findQuery

时间:2015-06-13 15:02:00

标签: ember-cli

我需要覆盖Ember cli中的DS.Store.findQuery。这本身就没有问题。

问题是从'finder'文件导入_findQuery方法 - 在新的app / store.js文件中

this._findQuery无法正常工作

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store.js

在'shimmed'组件/ ember-data中 原型是

function ember$data$lib$system$store$finders$$_findQuery(adapter, store, typeClass, query, recordArray

有没有人对所需的进口声明提出一些建议。

这是一些失败的尝试

import DS from 'ember-data';
import Ember from 'ember';

//import _findQuery from 'ember-data/lib/system/store/finders'; NOPE
//import _findQuery from 'ember-data'; NOPE

export default DS.Store.extend({

  findQuery: function(typeName, query) {
    var type = this.modelFor(typeName);
    var array = this.recordArrayManager
      .createAdapterPopulatedRecordArray(type, query);

    var adapter = this.adapterFor(type);

    Ember.assert("You tried to load a query but you have no adapter (for " + type + ")", adapter);
    Ember.assert("You tried to load a query but your adapter does not implement `findQuery`", typeof adapter.findQuery === 'function');

    var x = _findQuery(adapter, this, type, query, array); // <-- URGH HERE
    return promiseArray(x);
  },

1 个答案:

答案 0 :(得分:0)

我不确定您是否能够以您描述的方式导入它,但您可以在适配器上执行此操作。

您应该能够为每个适配器覆盖它,或者如果您想在任何地方覆盖它,请覆盖您的应用程序适配器。

喜欢这个

import DS from 'ember-data';
import Ember from 'ember';

export default DS.ActiveModelAdapter.extend({
  findQuery (typeName, query) {
    // do your stuff here
  }
});