コールバックに 'req'パラメータがない場合、reqオブジェクトにアクセスする方法を知ります。Node.js Expressのどこにでも現在のreqオブジェクトにアクセス
ExpressJでは、私は共通の機能を持っています。「req」オブジェクトで何かを処理するために使用されますが、reqは渡されません。
module.exports = {
get: function(){
var req = global.currentRequest;
//do something...
}
}
私の現在のソリューションは、私はすべての要求のためのミドルウェアを書くことで、私はその後、私は「global.currentRequest」でどこでも「REQ」にアクセスすることができ、グローバル変数に「REQ」を置きます。
// in app.js
app.use(function (req, res, next) {
global.currentRequest= req;
next();
});
しかし、それが良いかどうかわかりません。誰にでも提案はありますか?
ありがとうございました!
本当に選択せずに残っていない限り、グローバル変数は使用しないでください。それは反パターンとみなされます。参照してください:http://stackoverflow.com/questions/18635136/why-are-global-variables-considered-bad-practice-node-js –
唯一の適切な方法は、すべての関数の引数として 'req'を渡すことですそれを必要とする。要求を処理の一部として非同期呼び出しを使用し、複数の要求が互いに激しくぶつかり合ってバグを追跡することができない場合、同時に複数の要求が処理中である可能性があるため、グローバルでの処理は単純に機能しません。ここにはショートカットはありません。現在の要求を引数として必要なコードに渡します。 – jfriend00
jfriend00のように書いたのは本当に悪い考えです。また、スタック上で何百もの時間について議論されており、適切な解決策を見つけることはできません。問題は、非同期プログラミングのための同期思考を適用しようとしていることです。頻繁に映画のKungfuの主人はあなたの思考の方法を変えなければならないことを言う。 –