如何在少数路由器中使用创建的对象?

如何在少数路由器中使用创建的对象?

问题描述:

我尝试将它绑定到request.session或request.user,但具有相同的错误 - '未定义函数'。我如何使用创建的req.session.idle =新的SteamIdle('用户','通')在/启动路由器在/停止路由器,如果我直接通过url访问它们(localhost:3000/start和localhost:3000/stop )?如何在少数路由器中使用创建的对象?

router.get('/start', checkAuth, function(req, res, next) { 
    res.setHeader("Content-Type", "application/json"); 

    var data = { 
     statusCode: 1, 
     status: 'connected' 
    }; 

    if (typeof req.session.idle == "undefined") 
     req.session.idle = new SteamIdle('user', 'pass'); // created instance 

    if (!req.session.idle.isLogin){ 
     req.session.idle.connect(); 
     // req.session.idle.disconnect(); this will work here, but not in /stop router 
    } 
    res.send(data); 
}); 

router.get('/stop', checkAuth, function(req, res, next) { 
    res.setHeader("Content-Type", "application/json"); 

    var data = { 
     status: 'done' 
    }; 

    if (typeof req.session.idle != "undefined"){ 
     req.session.idle.disconnect(); //undefined function, is there any way to make it work? 
     delete req.session.idle; 
    } 
    res.send(data); 
}); 

SteamIdle

function SteamIdle(user, pass){ 
    var self = this; 

    self.userName = user; 
    self.password = pass; 

    // Main func 
    self.disconnect = function() { 
     console.log('disconnect'); 
    } 

    self.connect = function(auth){ 
     console.log('start work for user ' + self.userName); 
    } 
} 

module.exports = SteamIdle; 
+0

它将如何从/开始/停止路线(我没有在你的代码中看到next(),路线也不会匹配)或者你期望在下一个请求中使用它吗?在这种情况下,node创建新的req&res对象,所以你不能'使用这种方法绑定到req,你必须通过db –

+0

我只是想这样 - http:// localhost:3000/start,http://本地主机:3000 /停止。我可以在用户请求中保存我的变量,但是我无法保存对象的实例? – SLI

+0

sry misunderstood ur que –

我找到了解决方案。我使用nodejs的快速框架。在Express API - 我发现具有全球范围的app.locals propertis。所以我创建了req.app.idle =新的SteamIdle('user','pass')对象,并且可以在/停止路由器时访问它的断开连接功能。

好吧,RU尝试发送由铬或某些浏览器请求,问题是他们发送REQ两次(其它获得的favicon这打乱了乌拉圭回合的会话对象)

请尝试从一些rest client像邮递员,它vl work

在我使用的代码req.session.idle = {'a':'1'}并能够使用邮递员在停止路线中获得此json

+0

这就是要点。我可以得到它,但是如果我创建了一个对象SteamIdle的实例。比我在停止路线中不能使用SteamIdle funcs。它具有连接和断开功能,它们只在创建SteamIdle的路径中工作。 – SLI

+0

可能steamIdle创建一些对象,并没有绑定他们的会话,指向我的链接到SteamIdle –

+0

附加的SteamIdle代码到我的第一篇文章 – SLI