2017-12-05 13 views
0

Ember 데이터 객체의 관련 객체를 가져올 때 Ember 응용 프로그램과 내 Rails API 백엔드간에 내 네트워크 호출을보다 효율적으로 만들려고합니다. shop 많은 products Ember.js - 모델의 관련 객체를 가져올 때 전송되는 네트워크 요청의 형식을 변경합니다.

  • product이 - - productshop
  • 나는 그래서 만약, 이러한 모델의 모두에 대해 RESTAdapter을 사용하고 있습니다에 속하는

    • shop :의 나는 두 가지 모델이 있다고 가정 해 봅시다 나는 이렇게 상점의 제품을 얻는 것을 시도한다 :

      let shop = this.store.find("shop", 1); 
      let products = shop.get("products"); 
      

      shophasMany 관계가 있고 데이터베이스에 처음으로 product이 있다고 가정 해 봅니다. 네트워크 요청 (모든 URL 경로가 유효 가정 유효 컨트롤러와 액션으로 이어질)과 같이 보일 것입니다 :

      localhost:3000/api/v1/shops/1 
      localhost:3000/api/v1/products/1 
      localhost:3000/api/v1/products/2 
      localhost:3000/api/v1/products/3 
      localhost:3000/api/v1/products/4 
      localhost:3000/api/v1/products/5 
      ... 
      

      products API 엔드 포인트는 ApplicationRecord.where 전화로 공급하는 filter 매개 변수에 걸릴 수 있습니다. 그래서 내가하고 싶은 것은 shop.get("products") 호출의 결과를 변경하여 필터 매개 변수로 내 products 끝점을 한 번만 호출하고 500 개의 개별 호출 대신에 관련된 모든 제품을 대량으로 가져 오는 것입니다. API 끝점.

      이렇게하는 데 필요한 패턴이 있습니까?

    +0

    : https://discuss.emberjs.com/ t/coalescing-find-requests/7076 – Jeff

    +0

    어댑터에 기본적으로 다음 줄을 추가하십시오 :'coalesceFindRequests : true, ' – Jeff

    답변

    1

    예 패턴/매개 변수가 있습니다.
    coalesceFindRequests라고하고 응용 프로그램 어댑터 설정됩니다 :

    // app/adapters/application.js 
    
    export default DS.RESTAdapter.extend({ 
        coalesceFindRequests: true, 
        // more params to be set here 
    }); 
    

    관련 링크 :이 도움이 될
    The Adapter Docs
    an emberjs docs-entry
    a forum entry

    +0

    정말 고마워요! 사용자 지정 어댑터와 관련이 있다는 느낌이 들었지만 몇 가지 기능을 재정의해야 할 것으로 예상했습니다. 그것이 단 하나의 라이너라는 것을 알게되어 기쁘다. – Argus9