我和#34;架构师"插件系统包。 我创建了两个插件,名为"数据库"和一个"测试"。
数据库提供数据库和测试消耗数据库。
此实施发生以下问题:
当从测试插件调用我的方法getClientOnlineTimeById时,该方法将处理并执行回调,但是当我在回调函数中使用传递的数据时,例如设置一个变量,它每次都是未定义的。 尝试了许诺,没有任何改变仍未定义。
从database.js剪切:
getClientOnlineTimeById: function(clientDatabaseId, callback) {
// Get a mysql connection from our created pool
pool.getConnection(function(err, conn){
conn.release();
if(err) {
throw err;
}
// exec our query to get our client with our clientId
conn.query("SELECT `time` FROM `onlinetime` WHERE `clientDatabaseId` = ?", [clientDatabaseId], function(err, rows){
if(err){
// call callback and let it handle the error
callback(err);
}
if(options.debug)
console.log("[Database:getClientOnlineTimeById] returning row with data: " + JSON.stringify(rows));
// call callback with data
callback(null, rows);
});
});
}
从test.js剪辑:
var onlineTime = undefined;
db.getClientOnlineTimeById("5", function(err, data) {
if(err) {
throw err;
}
onlineTime = data;
});
console.log("onlineTime: \n" + JSON.stringify(onlineTime));
控制台日志:
onlineTime: undefined
[Database:getClientOnlineTimeById] returning row with data:[{"time":34501218327}] <-- This is the console.log from the getClientOnlineTimeById function
当我在test.js中添加我的console.log的setTimeout前面时,它可以工作,但是我在回调函数中只需要数据。我有什么遗失的吗?