EmberData의 FixtureAdapter에서query를 어떻게 지원합니까?

1630 단어 ember.js
Again, 아니면 Fixture Adpter의 문제입니다.
때때로 우리는fixtures가query를 지원해야 한다. 예를 들어 다음과 같다.
App.SomeRoute = Ember.Route.extend({
    model: function () {
        return this.store.findQuery('model', { name: 'xxx' });
    }
});

하지만 nope!당신은 다음과 같은 오류를 보고받을 수 있습니다.
Error: assertion failed: Not implemented: You must override the DS.FixtureAdapter::queryFixtures method to support querying the fixture store.

Why? DS.FixtureAdapter::queryFixturesfindQuery무슨 관계가 있습니까?원본 코드를 보면 원래 findQuery 호출된 방법이 바로 queryFixtures 방법이고, queryFixtures 내용은 매우 유머러스하다는 것을 알 수 있다.
queryFixtures: function(fixtures, query, type) {
    Ember.assert('Not implemented: You must override the DS.FixtureAdapter::queryFixtures method to support querying the fixture store.');
}

그러나 이것은 이해할 수 있다.fixtures는 위조된 APIresponses이기 때문에 진정으로 백그라운드 논리를 실현한 것이 아니다.그래서 EmberData는 형식적인 인터페이스만 제공합니다. 실제적인 수요에 따라 스스로 그것을 실현해야 합니다.
예를 들어 처음에 그 예에서 우리가 필요로 하는 것은 되돌아오는 데이터 그룹에서 선별하고 값과query 요청을 똑같이 되돌려주는 것이다. 간단하다.
DS.FixtureAdapter.reopen({
    queryFixtures: function (fixtures, query, type) {
        fixtures.filter(function (fixture) {
            var key;
            for (key in query) {
                if (!query.hasOwnProperty(key)) continue;
                if (fixture[key] !== query[key]) return false;
            }
            return true;
        });
    }
});
queryFixture가 수신한 세 가지 매개 변수는 각각 find돌아온 데이터 집합, 당신의 조회 조건 대상, 모델입니다.

좋은 웹페이지 즐겨찾기