2017-09-27 11 views
0

タイトルが言うように。私は別のルートからルートを呼び出す必要があります。expressjsのコードでルートを実行してください

私はrun-middleware npmモジュールを使用しましたが、2つのhttp要求を表示しているような、奇妙な出力を示すMorganを使用した後、どちらも同じです。また、無効なルートにアクセスすると、すべてのルートをキャッチしません。代わりにその投げ違いエラー。ここにログがあります。

data: app/server.js:29146 - ====================================== 
data: app/server.js:29146 - 200 
data: app/server.js:29146 - <!DOCTYPE html> 
data: app/server.js:29146 - <html lang="en"> 
data: app/server.js:29146 - <head> 
data: app/server.js:29146 - <meta charset="utf-8"> 
data: app/server.js:29146 - <title>Error</title> 
data: app/server.js:29146 - </head> 
data: app/server.js:29146 - <body> 
data: app/server.js:29146 - <pre>Cannot POST /api/v1/auth/authenticate</pre> 
data: app/server.js:29146 - </body> 
data: app/server.js:29146 - </html> 
data: app/server.js:29146 - ====================================== 
data: app/server.js:29146 - POST /api/v1/auth/authenticate - - ms - - 
data: app/server.js:29146 - POST /api/v1/auth/authenticate 200 474.491 ms - 268 

私は、この目的のために他のライブラリがあります/ ASDのルートが無効

req.runMiddleware('/asd',{method:'post'},function(code,data){ 
    console.log('======================================'); 
    console.log(code); 
    console.log(data); 
    console.log('======================================'); 
}); 

で以下のコードを使用?

または誰でも自分の作成を手助けできますか? 私はミドルウェアを作る方法を知っています&どのように表現のミドルウェアチェーンを呼び出すか、私はちょうどreqオブジェクトのどのフィールドを変更して復元する必要があるか知りたいです。

+0

あなたはすでに独自のミドルウェアを構築しています。 – TGrif

+0

はい私はそれらのカップルを持っていますが、私はreqまたはresを変更したことはありません –

答えて

0

あなたは別のルートを呼び出そうとしている場所にコードを表示しないので、あなたが何を求めているのか正確には分かりません。

あなたは1つのルートハンドラであり、あなたは別のルートハンドラのロジックを呼び出したい場合は、いくつかのオプションがあります。

  1. は、両方のルートハンドラが実行できる機能に共通のコードを抽出します。したがって、いずれかのルートハンドラから共通コードを呼び出すことができます。何らかの理由で、ルートハンドラを他のすべてのJavascript関数と同様に共有コードに分解できることを人々は忘れているようです。

  2. 発信者に別のルートにリダイレクトするように指示する302リダイレクトを返します。次に、他のルートとそのルートハンドラが処理できることを要求します。

  3. 他のルートの結果を取得するために自分のサーバーにhttp要求を行い、このルートでその結果を使用します。

通常、オプション1は、最小のオーバーヘッドを伴うため、最適な方法です。

実際に自分のreqresのオブジェクトを作成しようとするルートを外してみたいと思っています。方程式を完全に表現して、共有コードをreqresから独立した別の関数に分解してください。必要な入力を共有関数に渡して結果を返すと、それぞれのルートで独自にreqresを処理します。また、reqresの両方で同じように動作させたい場合は、それらを直接共有関数に渡して、それらを直接操作できるようにすることもできます。

+0

現在、私は約束を返し、reqとresから独立したコントローラを持っています。しかし、今ではコントローラの内部に多くのものがあるという問題を抱えています。時々、私はいくつかをスキップして、コントローラの呼び出し側に値を返します。スローする方法を知っていますか?エラー? –

+0

@JayadrathaMondal - 私たちは、理論的な質問のこれらの種類の非常によくあなたを助けることはできません。私たちに実際のコードを表示してください(あなたの質問で)、私は非常に具体的で有用な提案を提供できると確信しています。それはあなたが最初に投稿したものとは違って聞こえます(それはコントローラーに関するものなので、適切なコードセグメントで新しい質問に投稿するべきかもしれません)。新しい質問へのリンクを付けてここにコメントを投稿すると、 – jfriend00

+0

はい最後のコメントは質問に関連していません私はあなたのオプション1に完全に従わなかったら新しい質問をします。 –

関連する問題