我目前正在通过 PHP 使用 Nodejs 从我的数据库中获取数据。问题是我在抓取数据后要执行的脚本实际上是在我的抓取函数实例之后直接执行的,并且每次我都会收到一条错误消息,指出我的数据未定义。
这是我的代码:
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 语句中。
我被困了几个小时。如果有人有问题,请告诉我。