2014-06-20 2 views
0

저는 Node.js를 처음 접했고 세션()을 제외하고 현재 요청에 대한 변수를 저장하기 위해 "저장소"를 사용할 수 있는지 궁금합니다.현재 요청에 대해서만 Node.js 변수?

나는 권한 부여 헤더와 Redis에 저장된 유효한 토큰 풀을 기반으로하는 API를 가지고 있습니다.

따라서 세션이 없으므로 원하지 않습니다.

그러나이 요청 중에 추가 사용을 위해 변수를 저장하고 싶습니다. 예를 들어 Redis에서 찾은 토큰에 해당하는 user_id를 저장하여 원하는 곳 어디에서나 사용할 수 있습니다. 내가 할 경우

같은 :

app = express(); app.user_id = 1;

는 괜찮습니다, 또는 내 USER_ID 앱에서 처리하는 모든 요청에 ​​글로벌 될 것인가? (간단히 말해, 서버가 처리하는 각 요청에 대해 응용 프로그램이 인스턴스화되었거나 계속 유지됩니까?)

이렇게하지 않으면 세션없이 어떻게 할 수 있습니까?

app 모든 요청을 처리

+0

'app'은 모든 요청을 처리하며, 시작할 때 한 번만 생성됩니다. "어디서나 내가 원하는"말은 얼마나 넓은 의미입니까? 현재의 요청 내에서 상황을 배치 할 수 있지만 액세스하려면 요청에 액세스해야합니다. – dylants

+0

얼마나 넓습니까? 음, 모르겠다. 나는 회의에 익숙해. 모든 컨트롤러가 현재 사용자를 알기를 바랍니다. 어쩌면 내가 제안한대로 요청에 삽입 할 수 있습니다. 문서를보고 나면 함수가없는 것처럼 보이므로 연관 배열로 사용합니다. Dylants 감사합니다! 그것을 확인할 수 있도록 답변을 게시 할 수 있습니까? –

+0

확실한 것은, 그 대답이 당신이 생각하고있는 것이 었는지 알려주세요. :) – dylants

답변

5

도움 :) 주셔서 감사합니다, 단지 시작에 한 번 생성 될 수 있지만, 요청의 수명에 대한 req 살고있다. Express의 req은 개체 일 뿐이므로 값을 할당 할 수 있습니다. 를 허용하기를 원한다면 컨트롤러 (세션과 유사) 일부 값에 액세스 할 수 있도록, 당신은 같은 것을 할 수있는 : 위의 예에서

var express = require('express'); 
var app = express(); 

// middleware that assigns a value '123' to 'req.user_id' 
app.use(function(req, res, next) { 
    req.user_id = 123; 
    next(); 
}); 

// controller which responds with the 'req.user_id' 
app.get('/hello', function(req, res){ 
    res.send('req.user_id: ' + req.user_id); // responds with req.user_id: 123 
}); 

app.listen(3000, function() { 
    console.log('Listening on port 3000'); 
}); 

를, 내가 만든 미들웨어는 요청에 값을 할당 (user_id). 이 값은 요청이 지속되는 동안 유지됩니다. 컨트롤러를 통해 액세스 할 수 있도록 req에 동적 값을 할당하는 것과 비슷한 작업을 수행 할 수 있습니다.

+0

감사합니다, 정확히 내가 필요한 것! –

관련 문제