2016-11-21 4 views
0

나는 깃털 JS 프레임 워크 서버 쪽을 사용하는 프로젝트를 사용하고 있습니다. 많은 서비스에는 클라이언트에 다시 보내기 전에 다른 전화를 걸고 데이터를 첨부하는 후크 (또는 미들웨어)가 있습니다. 데이터베이스를 쿼리 할 필요가 있지만 필자가이 데이터베이스 쿼리에 대해 이미 "빌드"된 메서드를 사용하지 않으려 고 생각하는 몇 가지 특정 작업에 대해 "찾기"메서드가 많은 새로운 기능이있는 경우 다른 불필요한 후크 및 다른 데이터베이스에 대한 호출을 통해 필자의 필자는 필자의 필자가 필자의 필자가 필요로하는이 새로운 쿼리를 위해 필자는 필요하지 않다.깃털 JS 중첩 라우팅 또는 대체 서비스 만들기

내 두 솔루션 지금까지 :

  1. 내가 "발견"쿼리 표준을 사용하고 단지 그래서 만약 클라이언트 측에 전달 될 수있는 특정 문자열 매개 변수를 확인 모든 후크에 문을 쓸 수있다 이 훅은이 특정 호출에서 비활성화되지만 특히 이미 구축 된 여러 가지 다른 서비스에 대한 필요성을 발견하면 지루한 것처럼 보입니다.

    app.use('/comments', new JHService(options)); 
    

    내가 쓰기 바로 아래 :

  2. 나는 내 주요 서비스입니다 그래서 만약 내 주요 서비스 아래의 두 번째 서비스를 초기화

    app.use('/comments/allParticipants', new JHService(options)); 
    

    그리고 후크의 새로운 세트를 첨부 그 서비스. 기본적으로 이름의 첫 번째 부분은 '의견'이라는 점에서 출발점과의 유일한 관계가있는 완전히 새로운 서비스입니다. 깃털을 처음 사용하기 때문에 성능이 우수하거나 최적의 솔루션인지 확실하지 않습니다.

더 나은 해결책이 있습니까? 또는 옵션 1 또는 옵션 2가 현재의 문제를 해결하는 가장 올바른 방법입니까?

답변

1

당신은 항상 conditional hook로 인구 후크를 포장 할 수 있습니다 params.populatefalse가없는 경우

const hooks = require('feathers-hooks-common'); 

app.service('myservice').after({ 
    create: hooks.iff(hook => hook.params.populate !== false, populateEntries) 
}); 

지금 인구 만 실행됩니다.