2016-06-22 3 views
0
에서 디렉토리 처리기를 사용하는 경우 내 경로에 로직을 추가하는 방법

내 경로의 다음 코드를 추가 한 실제로 핸들러 함수에 추가했을 논리의 나머지 부분을 추가 할 위치를 이해하지 못합니다. 그러나 디렉토리 핸들러가 있어도 기능을 사용할 수 없습니다. 따라서이 경로의 나머지 논리를 추가 할 위치를 알고 싶습니다.Hapi.js

편집 : 플러그인 전기 울타리를 추가하는 시도 :

var ElectricFence = require('electricfence'); 
var options = { 
    path: 'public', 
    url: '/menu/{param*}', 
    listing: true, 
    index: false, 
    cache: 3600000 }; 
server.pack.register([{plugin: ElectricFence, options: options}]); 
server.route({ 
    method: 'GET', 
    path: '/menu/{param*}', 
    handler: menuget }); 

하지만이 중 하나가 작동하지 않는 것 같습니다.

+0

어떤 종류의 로직을 구현 하시겠습니까? 파일 제공을위한 모든 옵션은 다음에서 언급됩니다. http://hapijs.com/tutorials/serving-files – ZeMoon

+0

일부 정적 파일 만 제공하기 위해 GET 경로를 사용하고 싶지 않습니다. 데이터베이스에 일부 데이터를 저장하고이 경로에 도달 한 순간 사용자 세션을 시작하기를 원합니다. 처리기 기능이없고 요청을 받아들이고 응답을 반환하는 경우이 모든 기능을 어떻게 구현합니까? –

+0

https://github.com/wraithgar/electricfence Electric Fence가 내가 찾고있는 기능을 제공하는 것 같지만 작동하지 않는 것 같습니다. –

답변

0
const Path = require('path'); 
    const Hapi = require('hapi'); 
    const Inert = require('inert'); 

    const server = new Hapi.Server({ 
     connections: { 
      routes: { 
       files: { 
        relativeTo: Path.join(__dirname, 'public') 
       } 
      } 
     } 
    }); 

    server.connection({ port: 3000 }); 

    server.register(Inert,() => {}); 

    server.route({ 
     method: 'GET', 
     path: '/{param*}', 
     config: { 
      validate: { 
       query: { 
        id: require('joi').number() 
       } 
      }, 
      handler: { 
       directory: { 
        path: '.', 
        redirectToSlash: true, 
        index: true 
       } 
      } 
     } 
    }); 

    server.ext('onRequest', function(req, reply) { 
     for(var key in req.query){ 
      if(key) { 
       //some database and session logic goes here 
       console.log(req.query); 
      } 
     } 
     reply.continue(); 
    }); 

    server.start((err) => { 

     if (err) { 
      throw err; 
     } 

     console.log('Server running at:', server.info.uri); 
    }); 
관련 문제