Node.JS与req.session.variable异步?

时间:2015-02-03 13:40:12

标签: javascript mysql node.js

 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);

正如你所看到的那样,很明显,我取消注释第三行重新启用,因为我坚持使用'调试'。

无论如何,输出通常都是;

  1. [index.js] [0] 3
  2. [index.js] [1] 3
  3. [index.js] [2] 0
  4. 我使用布尔值来尝试检查它出错的地方。 无论如何,在函数中的一些回调和函数之后,我在这部分结束 -

    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中创建一个局部变量(当然不是最佳方式),它会修复它,但是每个查询一次,而不是每个用户(哑是)。

    我添加了未定义的东西,当我乱用mySQL并重置一些数据时,它就会发生。我想知道自己是否应该切换到mongoDB应有的性能,但这可能适用于以后。

    所以主要的问题是,我在哪里出错,哪个更好的方法为每个用户建立一个队列(会话?),显然,不是每个服务器?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。 这让我忙碌了一周,同时阅读了很多关于节点的知识。

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

谢谢achmad。