2017-06-30 10 views
0

nodejsのルータでは、セッションでたくさんのことをしています。 Ruby on Railsでは、session_helperのような独自のクラスに取り込んでいた可能性があります。ルートコントローラでは、include sessions_helperのようにしか言いませんでした。突然、クラス内のすべてのデータにアクセスできるようになりました。 session.renew関数が呼び出された場所のどこでもスコープ全体へのアクセスが可能ですか?

ここで私が見るのは、関数を作成し、ルータのパラメータとしてreq & resを渡すことです。

クラスをインポートしてからメソッドを使用する方法があります。このメソッドを使用するには、このスコープにアクセスする必要があります。

答えて

0

通常のセッション機能を持つnodejでは、現在の要求のセッションはreq.sessionになります。リクエストで動作するすべてのコードは、reqオブジェクトにアクセスできるリクエストハンドラから発生するため、現在のリクエストに属するセッションで操作したいコードには、reqまたはreq.sessionのいずれかのコードを渡すだけです。それは物事が典型的にはノードで行われる方法です。 。

それはあなたがセッションで動作するクラスを作成したい場合、あなたは、単にのようないくつかのミドルウェアを作成することができます)、そのメソッドを使用して開始し、その後、クラスをインポートして、」何を意味を正確に明確ではありません

app.use((req, res, next) => { 
    req.mySessionObject = new mySession(req.session); 
    next(); 
}); 

そして、req.mySessionObjectはあなたのすべてのリクエストであなたのセッションオブジェクト(現在のリクエストに対して適切なセッションで初期化されます)になり、そのオブジェクトに作成する任意の方法とどこでもreq.mySessionObjectにアクセスできます。 reqまたはreq.mySessionObjectをセッションオブジェクトを使用するか、ルートハンドラのスコープ内で関数を宣言したいいつでもreqオブジェクトに直接アクセスできます。

これは説明しようとしていた内容をカバーしていない場合は、実行可能なコード例を示してください。

+0

私はこのようにしています: 'session.validateCode(... arguments);'次に、res、req、nextなどにアクセスできます。しかし、Railsでは、それは私のメソッドから呼び出すことができるクラスにメソッドを追加します。 –

+0

@MuhammadUmer - あなたは何をしようとしているのか分かりません。今はレールを忘れています(私はレールが分かりませんので、まったく助けになりません)。あなたが達成しようとしていることを(あなたがそれを達成しようとするのではなく)説明してください。私はあなたが望むならあなた自身のセッションメソッドをどうやって持てるかを説明しました。他に何が欲しいかわからない。 – jfriend00

関連する問題