2016-07-18 4 views
1

Hapiに新しく、初めてのアプリを書く。 ルートとコントローラは、各モジュール内の別々のファイルにあります。Hapiアプリのルートにあるコントローラにアクセスする際の問題

const controller = require('./controller'); 

、その後のようなルートを書く:これまでのところは良い

module.exports = [{ 
    path: '/items/{id}', 
    method: 'GET', 
    handler: controller.getItemById 
}]; 

をこれまでのところ、私は私のルートのコントローラは以下のようにファイルを必要としていました。

ここで、コントローラメソッドでキャッシュを使用したいと考えています。これは私のコントローラをプラグインに変換することを余儀なくされました。

だから私のコントローラは、今のようになります。

exports.register = (server, options, next) => { 

    const itemCache = (id, itemId) => { 
     // do caching stuff 
    } 

    const getItemById = (request, reply) => { 
    // do stuff, use itemCache 
    } 

    server.expose({ 
     getItemById: getItemById 
    }); 

    next(); 
}; 

質問は今、私は私のルートファイル内のコントローラへのアクセス方法、ありますか?ルートファイルではserver.dependency()を使用できません。

答えて

0

は私が最良かつ最も標準的な方法は、どちらか

Aになりハピでこれを処理するために言うが)HAPIそれは、サーバが

を通過しますので、あまりにも独自のプラグインをだルートを作るためにも新たなんです

または

B)ルートインデックスファイルのエクスポートを、サーバーをパラメータとして受け入れる関数にします。サーバーのルートを返します。メインインデックスファイルにサーバーを作成した後に呼び出します。

また、ルートのハンドラーとなる関数用のサーバーオブジェクトがコントローラーに必要な場合は、それらの関数に渡される要求パラメーターからサーバーオブジェクトを取得できることにも注意してください。 (ps:これはガッタボードからのラナです:P)

関連する問題