2016-11-15 7 views
0

私はNodeを使い始めていますが、変数の設定に問題があります。下の例では、randomの値は、すべてのユーザーが同じであるように見えます。これは、アプリの開始時に設定されているためです。グローバル変数とローカル変数を設定する

app.post('/api/whatever/', function(req, res) { 
    var random = math.Random(); 
    console.log(random); 
}); 

私が把握しようとしているどのようなランダムな値を設定する方法である:ローカル変数を使用して

var random = math.Random(); 

app.post('/api/whatever/', function(req, res) { 
    console.log(random); 
}); 

はランダムな変化の値がPOSTリクエストが行われるたびにことを意味しますユーザー/セッションごとに1回(つまり、ユーザーが/ api /何にでも電話するのは初めてです)。最初のリクエストの後に設定するための他の設定変数があるので、init()関数をトリガする方が良いかもしれません。しかし問題は同じだろう。

答えて

0

グローバル変数はセッションIDをキーとするオブジェクトを保持でき、値は任意のセッション固有の情報(乱数など)です。

この質問を参照して、セッションIDを取得するには:How can I find the session Id when using express/connect and a session store?

+0

あなたはエクスプレス - 使用を参照していますセッション?私は昨日それを試みましたが、app.use(session(sess))がAPIメソッドの外にあるので、すべてのリクエストが同じIDを持つように見えます(アプリケーションが 'node app.js'を使用して起動し、ユーザーがリクエストを行う)私はPostmanを使ってテストしていますが、2つのタブを開いたときのセッションIDは同じでした。 – krazy4code

0

express-sessionモジュールを使用します

npm install express-session

はここに例を示します

... 

var session = require('express-session'); 

app.use(session({secret: '1234567890QWERTY'})); 

app.get('/api/whatever/', function(req, res) { 

    if(req.session.random) { 
    res.send('Your random key is: ' + req.session.random); 

    } else { 
    req.session.random = Math.random(); 
    // Set anything else you want in req.session ... 
    } 

}); 
+0

私はしばらくの間テストしました。問題は私の方法にかかわらず同じようだ。すべてのユーザーが同じ値を持つため、グローバル変数は機能しません。ローカルポストは、新しいポストコールを行うたびに値が更新されるため、機能しません。 Express-Sessionでも新しいIDが生成されます。 – krazy4code

+0

わかりません。エクスプレスセッションは、各ユーザーごとに固有のCookieに基づいています。すべてのユーザーは独自のセッションオブジェクトを持ち、特定のユーザープロパティを設定できます。これはグローバル変数やローカル変数ではありません。テストしたコードで質問を更新できますか?これまでに試したことがある永遠に質問を更新することは本当に便利です。 – karliwson

+0

私の間違い。あなたの例は完全に機能します。私が理解できない部分は、上記のgetメソッドの範囲外にある関数からセッションクッキー値を取得して設定する方法だけです。たとえば、app.get内でfunction foo(someparam){}を呼び出し、その関数内からセッションCookieにアクセスしようとしたとします。 – krazy4code

関連する問題