Javascript NodeJS+;Redis+;HTTP获取
我目前正在使用Nodejs通过PHP从数据库中获取数据。 问题是,我想要在抓取数据之后执行的脚本实际上是在抓取函数的实例之后直接执行的,每次我都会收到一个错误,说我的数据未定义 这是我的密码: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("
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来自另一个地方,但不要注意它。