Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS+;Redis+;HTTP获取_Javascript_Node.js_Http_Get_Redis - Fatal编程技术网

Javascript NodeJS+;Redis+;HTTP获取

Javascript NodeJS+;Redis+;HTTP获取,javascript,node.js,http,get,redis,Javascript,Node.js,Http,Get,Redis,我目前正在使用Nodejs通过PHP从数据库中获取数据。 问题是,我想要在抓取数据之后执行的脚本实际上是在抓取函数的实例之后直接执行的,每次我都会收到一个错误,说我的数据未定义 这是我的密码: var http = require('http'), redis = require("redis"); client = redis.createClient(); client.on("error", function (err) { console.log("

我目前正在使用Nodejs通过PHP从数据库中获取数据。 问题是,我想要在抓取数据之后执行的脚本实际上是在抓取函数的实例之后直接执行的,每次我都会收到一个错误,说我的数据未定义

这是我的密码:

var http = require('http'),
redis = require("redis");
client = redis.createClient();

        client.on("error", function (err) {
          console.log("Error " + err);
        });

        var sessionData;
        // Check if we have session create with sessionID gived before (hash)

        client.get('sessions:'+sessionId, function (err, result) {
            var resData;
            //Check if we have session with the session id 
            // If we have not execute function to get the data
            if(err || !result)
            {
                executefunction(get_sess_data,sessionId);
            }
            // If we have, get it from redis
            else
            {   
                resData = result;
                console.log(resData);
            }
            // settings session data with the result
            sessionData = JSON.parse(resData);
        });
// Execute function with sessionid as value

function executefunction(someFunction, value) {
  someFunction(value);
}
// Getting data from database (using script from Codeigniter)

var get_sess_data = function(response)
{
    var options = {
            host: 'www.example.dev',
            port: 80,
            path: '/index.php/user_session/decrypt?id='+sessionId
        };
    http.get(options, function(result) {
        result.on("data", function(chunk) {
            client.setex('sessions:'+sessionId, 21600, chunk.toString());

        }).on('error', function(e) {
            console.log("Got error: " + e.message);
        });
        result.end(response);
    });
};
仅供参考,我知道获取数据的代码正在工作,因为如果我不执行以下脚本“sessionData=JSON.parse(resData);”,即使我将其放在if语句中,我也可以返回它们


我被困在上面好几个小时了。如果有人有问题,请告诉我。

我认为您的代码非常混乱。你能评论一下吗?你在哪里发现了错误?此外,您可以调用未定义的executefunction,也可以定义未调用的execute。是否正确?用注释编辑并从executefunction中删除错误。我不确定您的代码是如何工作的。只需查看get_sess_数据,就可以知道如何“path:'/index.php/user_session/decrypt?id='+sessionId”获取sessionId。这里的问题是,我不知道我的方法是否正确。我只是想看看我是否有一个会话。如果我没有任何脚本,请运行脚本并等待它的结束以获得返回。您可以更改IF语句中的所有内容,这就是我的问题所在,sessionId来自另一个地方,但不要注意它。