如何在nodeJS中拥有一个变量会话

时间:2017-02-05 17:05:06

标签: javascript node.js session

对不起我的问题,我是一名大三学生。

当我的节点服务器连接两个不同的用户时,我的变量交叉,结果错误。

我读过我必须在nodejs中使用我的变量的会话,但我不知道如何使用。

当我在console.log中我的变量'Pseudo'时,如果两个用户连接,有时我会得到错误的结果。

请帮帮我:(

//Le modules
var express = require('express'),
bodyParser = require("body-parser"),
session = require('express-session'),
cookieParser = require('cookie-parser'),
app = express(),
//mongoose = require('mongoose'),
MongoClient = require('mongodb').MongoClient,
//assert = require('assert'),
ObjectId = require('mongodb').ObjectID,
device = require('express-device'),
morgan = require('morgan'),
fs = require('fs'),
path = require('path'),
log4js = require('log4js'),

//Module complémentaire pour MORGAN
accessLogStream = fs.createWriteStream(path.join(__dirname,'access.log'), {
    flags: 'a'
}),

myDate = new Date;


app.use(cookieParser());
app.use(device.capture()); //Module pour connaitre la plate-forme deconnection (PC, tablette, mobile...)
app.use(express.static(__dirname + '/fichiers'));
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(morgan('combined', {
stream: accessLogStream
}));

app.use(session({
secret: '123456789SECRET',
saveUninitialized: false,
resave: false,
cookie: {
    maxAge: 10000
}
}))

app.set('view engine', 'jade'); // Template HTML
app.set('views', './fichiers'); // Dire à JADE où sont les fichiers.



var pseudo = '';

app.get('/blindtest', function (req,res){
res.render('blindtest');
})

app.post('/envoiPseudo', function (req,res){
return pseudo = req.body.pseudo;
})

app.get('/test', function (req,res){
console.log(pseudo);
})

var server = app.listen(8080, function () {
var adressHost = server.address().address;
var portHost = server.address().port;
console.log('Ecoute à l\'adresse http://%s:%s', adressHost, portHost);
});

1 个答案:

答案 0 :(得分:0)

您正在将app设置为app.js中的变量,您需要将其分配给用户会话。您可以通过执行

来访问(和设置)会话变量
req.session.[variable]

一个简单的例子是:

app.post('/envoiPseudo', function (req,res){
req.session.pseudo = 'this is unique to the user requesting';
console.log(req.session.pseudo);
res.send("pseudo session variable: " + req.session.pseudo);
})

修改 正如jfriend00所说,你不应该"返回"这样的变量。您应该将内容添加到响应(res)并发送它。