I want to fetch some values from the current user Session and use them in MySQL query. I am working on Node.js and using redis to manage sessions.
File Name:User.js
var sessionUtils = require('./../services/sessionUtils');
var Constants = require('./../constants');
var config = require('./../config');
var databaseUtils = require('./../services/databaseUtils');
var redisUtils = require('./../services/redisUtils');
var util = require('util');
showUserPage: function* (next){
var queryString = "";
var query = "";
/*Do something to store session in variable*/
queryString = "select * from table where state='%s' and city='%s';";
query = util.format(queryString,/*state variable here*/, /*city variable
here*/);
var user = yield databaseUtils.executeQuery(query);
console.log(query);
yield this.render('user', {
user:user
});
}
File Name: sessionUtils.js
var redisUtils = require('./redisUtils');
var uuid = require('uuid');
var thunkify = require('thunkify');
saveUserInSession: function(user, cookies) {
var sessionId = uuid.v1(); // uuid: uniqe id every time
var sessionObj = {user: user};
redisUtils.setItemWithExpiry(sessionId, JSON.stringify(sessionObj), 86400); // 86400: for 1 day
cookies.set("SESSION_ID", sessionId);
},
getCurrentUser: thunkify(function(sessionId, callback) {
var currentUser;
if(sessionId) {
redisUtils.getItemWithCallback(sessionId, function(err, res) {
if(err) {
logger.logError(err);
}
if(res == null) {
callback(currentUser);
} else {
callback(err, JSON.parse(res).user);
}
});
} else {
callback(currentUser);
}
})
I am using line below in Login.js file to save user in session .
sessionUtils.saveUserInSession(results[0], this.cookies);
Help me out with this.
I have solved this problem by placing following code in place of /* Do something to store session in variable */
var sessionId = this.cookies.get("SESSION_ID");
var currentUser = yield sessionUtils.getCurrentUser(sessionId);
and used it in MySQL query as given below:
queryString = "select * from table where state='%s' and city='%s';";
query = util.format(queryString,currentUser.state, currentUser.city);
Hope, it helps others too.