私はjavascriptが初めてで、node.jsに飛びつきました。私は多くの理論を読み、実用的な側面から始めました (私はモバイルアプリ用の API を書いています) が、ミドルウェアにつながる基本的な問題が 1 つあります。ミドルウェア機能を正常に実装しましたが、ミドルウェアのアイデアを使用して問題がないかどうかを知り、ミドルウェアに至った元の問題を解決したいと考えています。私の質問は2つあり、次のとおりです。
1)私が収集したものから、ミドルウェアを使用するというアイデアは、実際にリクエストを処理する前にプロセスを繰り返すことです。次のように、トークンの検証に使用しました: URL の 1 つだけがトークン パラメーターを受け取らないため、
app.js
app.get('/settings', auth.validateToken, auth.settings);
auth.js
function validateToken(req, res, next){ //code };
validateToken では、私のコードはトークンをチェックし、すべてが OK であれば next() を呼び出します。または、res を json として変更して特定のエラー コードを返します。
これに関する私の質問は次のとおりです。a) これはミドルウェアの正しい使用法ですか? b) 次の関数に値を渡す [正しい] 方法はありますか? すべてが OK の場合にのみ next を呼び出す代わりに、どちらの方法でも next を呼び出し、ミドルウェアが成功したかどうかを next 関数の内部から知る [正しい] 方法はありますか? ある場合、これはミドルウェアの適切な使用でしょうか? この正確なポイントは、関数をカプセル化するという最初の問題と、この質問のパート 2 につながります。
この部分は修正されました。私の 2 番目のコメントを参照してください。
2) 私は、validateToken を単純にカプセル化し、get ハンドラーが指す関数 (auth.settings など) 内から呼び出すことができるミドルウェアを発見しました。私は一般的なシーケンシャル プログラミングに慣れており、javascript ではなく、node.js のイベント ベースの性質を考慮して、これを行う方法を理解できませんでした。
私が今やりたいことは、ユーザーとパスワードを単純に検証する関数を書くことです。特定のハンドラー内に完全に記述しましたが、別のハンドラーにコピーして貼り付けようとしていたため、停止しました。ゼロから正しい方法で物事を行い、node.js を理解したいです。私が抱えている具体的な問題の 1 つは、ユーザーとパスワードが一致しない場合に返さなければならないエラー コードが親関数によって異なることです。そのため、コールバック関数に伝えるにはこの関数が必要です。 「ねえ、パスワードとユーザーが一致しません」なので、親関数から正しいメッセージで応答できます。
私が実際に望んでいるのは、別の関数内から呼び出すことができる非同期関数を作成することだと思います。
私は自分でこれを解決しようとしてきましたが、実際の問題が何であるかについて頭を悩ませることはできません。 jsとJS. 前もって感謝します!ジェニファー。