Это мой «войти» слой:NodeJS экспресс-сеанс (почему не определено?)
app.post('/sign', function(req, res) {
sess=req.session;
var query = 'SELECT * FROM ?? where ??=? AND ??=?';
var table = ["users", "name", req.body.login, "password", md5(req.body.password)];
query = mysql.format(query, table);
connection.query(query, function(err, rows) {
if(err) {
console.log(err);
return;
} else if(rows.length > 0) {
console.log("You have been sucessfully logged in.");
sess.login = req.body.login;
console.log(sess.login);
} else {
console.log("The name or password is incorrect.");
}
});
res.end();
});
Как вы видите, сессия должна быть создана, когда пользователь существует в базе данных (в самом деле, console.log (sess.login) показывает в консольном правильном содержании сеанса, так что сеанс был создан). Проблема в том, что я меняю слой.
app.get('/', function(req, res) {
sess = req.session;
if(sess.login) {
res.render('indexo');
} else {
res.render('index');
}
console.log(sess.login);
});
Почему sess.login не определен здесь? Вот остальная часть моего кода (над слоями)
/*******************************************/
/**/ var express = require('express'),
/**/ session = require('express-session'),
/**/ bodyParser = require('body-parser'),
/**/ ejs = require('ejs'),
/**/ mysql = require('mysql'),
/**/ md5 = require('md5');
/*******************************************/
var app = express();
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'simpledatabase'
});
connection.connect(function(error) {
if(error) {
console.log("There is a problem with connection to the database.");
return;
}
console.log("Connected with a database.");
});
app.use(session({
secret: 'test session',
resave: false,
saveUninitialized: true
}));
app.use(express.static('public'));
app.use('/js', express.static('bower_components/jquery/dist'));
app.use(bodyParser.json());
app.set('view engine', 'ejs');
app.set('views', 'public/views');
var sess;
sess.login видна, когда я создаю его, например, таким образом:
app.post('/sign', function(req, res) {
sess=req.session;
sess.login = req.body.login; /****** HERE ******/
var query = 'SELECT * FROM ?? where ??=? AND ??=?';
var table = ["users", "name", req.body.login, "password", md5(req.body.password)];
query = mysql.format(query, table);
connection.query(query, function(err, rows) {
if(err) {
console.log(err);
return;
} else if(rows.length > 0) {
console.log("You have been sucessfully logged in.");
} else {
console.log("The name or password is incorrect.");
}
});
res.end();
});
Но вы знаете об этом I хотите создать сеанс только в том случае, если пользователь существует в базе данных.
Короче говоря: sess.login отображается только в слое '/ login', если я создаю сеанс в 'if'. Все соединения с базой данных правильно настроены, все отлично работает с этим.
Благодарим за помощь.