NodeJs,Architecht和MySQL迟到了?

时间:2018-01-25 19:31:24

标签: javascript mysql node.js node-mysql

我和#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前面时,它可以工作,但是我在回调函数中只需要数据。我有什么遗失的吗?

0 个答案:

没有答案