2015-02-03 2 views
0
router.get("/roll", function (req, res) { 
    //Re-enable the session. 
    //req.session.isrolling = 1; 
    if(typeof req.session.isrolling === "undefined") { 
     console.log(classname + "** setting the variable **"); 
     req.session.isrolling = 1; 
    } 
    console.log(classname + "[0]" + req.session.isrolling); 
    if(req.session.isrolling == 1 || req.session.isrolling == 3) { 
     console.log(classname + "[1] " + req.session.isrolling); 
     req.session.isrolling = 0; 
     console.log(classname + "[2] " + req.session.isrolling); 

당신이 볼 수 있듯이, 나는 분명히 '디버깅'으로 자신을 찔렀다.Node.JS req.session.variable과 비동기?

어쨌든 출력은 정상적으로 출력됩니다.

  1. 는 [하는 index.js] [0] 3
  2. [하는 index.js] [1] (3)
  3. 는 [하는 index.js] [2] 0

난에 부울을 사용 시도가 잘못되었는지 확인하십시오. 나는이 부분에 종료 기능 내에서 일부 콜백과 기능 어쨌든 후 - 콘솔도하지 않은 동안 롤이 대기하는 동안이 모든에도 불구하고

rollController.UpdateDeposit(true, winAmmount, req.session.userSecret, function(callbackresult) { 
    if(callbackresult) { 
     console.log(classname + "[3]" + req.session.isrolling); 
     req.session.isrolling = 3; 
     console.log(classname + "[4]" + req.session.isrolling); 
} 

, 그리고 예상되는 '출력'나는 스팸을 유지할 수 있습니다 출력;

[index.js] [3]0 [index.js] [4]3

내가하는 index.js 내에서 지역 변수 (당연히하지 최적의 방법으로) 그것을 수정을 만들려고하면,하지만 당은 1 개 쿼리, 그리고 사용자 당 (벙어리 예).

내가 정의되지 않은 것을 추가했는데, 그것은 mySQL을 뒤범벅하고 일부 데이터를 재설정 할 때 발생합니다. 성능 때문에 mongoDB로 전환해야한다면 나 자신을 궁금해하고있다.

그래서 주된 질문은 어디서 잘못 될 것인가? 사용자 당 대기열을 만드는 더 나은 방법은 무엇입니까?

+0

많은 디버깅과 시도 끝에 문제가 발견되었습니다. 세션 변수가 변경되었지만 메서드가 완료된 후에 세션 저장소가 문제가 있습니다. 변수의 개념은 보류중인 메소드가 보류 중일 때 충돌을 막는 것입니다. 클라이언트와 마찬가지로 타이머를 사용하여 완료됩니다. –

답변

0

마지막으로 해결책을 찾았습니다. 이것은 많은 것을 읽는 동안, 그리고 노드에 대해 더 많이 배우는 동안 많은 시간 동안 나를 바쁘게했습니다.

 req.session.save(function(error) { 
      console.log(classname + " Error in saving session " + error) 
     }); 

는 achmad 감사드립니다.

관련 문제