如何在少数路由器中使用创建的对象?
问题描述:
我尝试将它绑定到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;
答
我找到了解决方案。我使用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
它将如何从/开始/停止路线(我没有在你的代码中看到next(),路线也不会匹配)或者你期望在下一个请求中使用它吗?在这种情况下,node创建新的req&res对象,所以你不能'使用这种方法绑定到req,你必须通过db –
我只是想这样 - http:// localhost:3000/start,http://本地主机:3000 /停止。我可以在用户请求中保存我的变量,但是我无法保存对象的实例? – SLI
sry misunderstood ur que –