2016-06-22 6 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 電気フェンスは、私が探している機能の種類を提供しているようですが、動作していないようです。 –

答えて

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); 
    }); 
関連する問題