2016-08-20 5 views
0

私はNode.jsのサーバー上のログインスクリプトを持っているので、ユーザがログインするとき、私は例えば、そのユーザのための新しいオブジェクトを作成中に、新しいオブジェクトにアクセスできるよう:Javascriptがすべてのスコープ

// MOCK-UP: NOT ACTUAL CODE 

db.query('QUERY', function(err, rows, fields){ 

     if(!err){ 

      var User = new _User(row[0].id, row[0].name, ...); 
      // Continue on 

     } else { throw err } 

}); 

に誰かがログインするたびに新しい_Userオブジェクトを作成して、グローバルにアクセスできるようにするにはどうすればいいですか?私はクラスにすべての現在のユーザー情報を格納し、すべてのクラスメソッドを使用するだけでなく、任意の時点でそれを簡単に取得できるようにしたい。

EDIT:上書きする場合は、var Player;のどこかを初期化することをお勧めしますか?わかりません。ええ、助言が必要です。

P.S.:ログインスクリプトはソケットイベント内にあり、調整に合わせてコードを書き直しても構いません。

P.P.S:私はソケットの内部に情報を保存したくありません。

+0

すべてのユーザーの要求が同じグローバルセットにアクセスするため、異なるユーザーがお互いのデータをただちに取得するため、単一のグローバルを使用してサーバー環境内のユーザーを追跡することはできません。あなたがここで望むのはセッションです。 Expressとexpress-sessionを使用することをお勧めします。これにより、すべてのリクエストハンドラが利用できる各ユーザのセッションオブジェクトが自動的に作成されます。そのセッションオブジェクトに任意のものを格納することができ、それはそのユーザーの要求だけで利用可能になります。 – jfriend00

+0

@ jfriend00でも、ソケットと同じことがありますね。それは私が現在使っているものですが、別のユーザークラスを持ちたいと思っています。 – Micard

+0

私はあなたが何を意味するのか分かりません。しかし、同じことがソケットを使っているのですか?そうではありませんか?ソケットがユーザーとの接続を表している場合は、ソケットオブジェクト自体に '.user'プロパティを追加できます。 – jfriend00

答えて

1

ソケットがユーザーとの接続を表す場合は、socket._userプロパティをソケットオブジェクト自体に追加することができます。 Userオブジェクトにメソッドを追加する場合は、Userコンストラクタにプロトタイプを追加できます。