javascript - 从nodejs中的第二个函数获取结果

标签 javascript node.js redis

写node 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 :)

谁有什么想法?

最佳答案

据我所知,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);
  }
});

关于javascript - 从nodejs中的第二个函数获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34634371/

相关文章:

javascript - 如何从页面取消设置谷歌地图?

Javascript/Jquery 幻灯片菜单在 Chrome 中不起作用

JavaScript - putImageData 不会绘制每个图 block

javascript - 如何限制 Node js中的并行http请求数?

mysql - Sequelize 查询显示多对多关系中的附加数据

javascript - ExpressJS - 为通用 Nuxt 应用程序和 AngularJS SPA 提供服务

transactions - Redis中的流水线与事务

javascript - 如何计算沿(贝塞尔曲线)移动的 1/4 圆弧?

php-redis - 有没有办法在不序列化的情况下将 PHP 对象存储在 Redis 中?

redis - 如何连接到远程Redis服务器?