编写节点js脚本并有下一个问题。我如何从clientSession函数获得结果
var User = function() {}
User.prototype.get_current_user = function (cookie) {
var cookieManager = new co.cookie(cookie);
var clientSession = new redis.createClient();
var respons=clientSession.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result) {
try {
if(result != null){
var session=JSON.parse(result);
if(session.current_user_ID>=1) {
return session.current_user_ID;
}
} else {
return "session does not exist";
}
} catch (error) {
return "error : "+error;
}
});
return respons;
}
module.exports = new User();
函数调用
var User=require('user');
var user_data=User.get_current_user(ws.upgradeReq.headers["cookie"]);
console.log(user_data); // return null. Null it's wrong answer :)
谁有任何想法?
答案 0 :(得分:1)
从我看到的get_current_user
是一个异步函数。因此,如果您想要current_user_ID
,则需要传入一个函数以用作回调。
User.prototype.get_current_user = function (cookie, callback) {
var cookieManager = new co.cookie(cookie);
var clientSession = new redis.createClient();
clientSession.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result) {
try {
if(result != null){
var session=JSON.parse(result);
if(session.current_user_ID>=1) {
callback(null, session.current_user_ID);
}
} else {
callback("session does not exist");
}
} catch (error) {
callback("error : "+error);
}
});
}
然后将其用作
User.get_current_user(ws.upgradeReq.headers["cookie"], function(err, userId) {
if(!err) {
console.log(userId);
}
});