2017-04-09 9 views
0

私のアプリケーションでGrantというライブラリを使用しています。以前は、上記のリンク先のreadmeの例に従っていましたが、条件付きで含める必要があり、動作させることができません。それはExpressに条件付きでサブアプリケーションを含めるにはどうすればよいですか?

const grant = new Grant(grantConfig); 
app.use(grant); 

前に働いていた方法

私は前にExpressで、条件付きミドルウェアを行ってきたので、私は助成金を含めても問題にならないだろうと思いました。

const grant = new Grant(grantConfig); 

app.use((req, res, next) => { 
    if (someBooleanVariable) { 
     next(); 
    } else { 
     grant(req, res, next); 
    } 
}); 

私が試した方法(動作しませんが)これは動作しません。私は、GrantがExpressのインスタンスと通常のミドルウェアの機能のインスタンスであることとは関係があると思っていますが、わかりません。 Grantの実装方法はhereです。 Expressのドキュメントでは、同じ扱いをしなければならないと言われていますが、誤解している可能性もあります。

注:これは、リクエストごとに動作するため、ミドルウェアスタイルのアプローチが必要です。あなたがルートのサブセットのみに特定のミドルウェアを使用したい場合は

+0

あなたはapp.use(助成金)を試してみました持っています。このelse文の中に? –

+0

リクエストごとに実際に使用する必要がありますか、特定のルートにのみ必要ですか? – robertklep

+0

私が試したときにapp.use(grant)が動作しませんでした。理想的には私はそれをルートのサブセットで使用する必要があります。 –

答えて

1

// On a single route: 
app.get('/some/route', grant, function(req, res) { 
    ... 
}); 

// On a set of routes with a particular prefix: 
app.use('/api', grant, apiRouter); 

// On a specific router: 
let apiRouter = express.Router(); 

apiRouter.use(grant); 
apiRouter.get(...); 
関連する問題