如何使用mysql包从nodejs获取结果? [英] How to get the results from nodejs using mysql package?

查看:326
本文介绍了如何使用mysql包从nodejs获取结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,我连接数据库并选择数据库:

first, i connect the db and select DB:

var defaultOptions = {
    user: "root",
    pwd:'admin',
    db:"britcham_dev_local",
    server:"local", // Maybe we don't need this variable.
};

var client = new Client();
client.user = defaultOptions.user;
client.password = defaultOptions.pwd;
client.connect(function (error, results) {
   // 
});
client.query('USE ' + defaultOptions.db, function (error, results) {
   // 
});

第二,我使用客户端对象进行查询:

Second, I query with client object:

var self = this;
var this.users;
client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        self.users = results;
    }
});

console.log(this.users);

没有任何输出???为什么??

it's nothing output ??? Why ??

推荐答案

由于node.js是非阻塞且异步的,因此在此代码中:

Since node.js is non-blocking and asynchronous, then in this code:

client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        self.users = results;
    }
});

console.log(this.users);

当您尝试将DBP的

数据登录到控制台时,该数据可能尚未加载到users变量中.您可以检查是否在查询中执行了console.log操作,例如:

data from DB are not probably loaded yet into users variable when you are trying to log it into console. You can check it out if you do your console.log operation within the query, for example:

client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        console.log(results);
    }
});

要在操作完成后将结果传递给变量,可以将客户端DB调用包装到带有回调参数的函数中,并在调用回调时设置变量,例如:

To pass the result into a variable when the operation is finished you can wrap your client DB call into a function with callback parameter and set your variable when the callback is invoked, for example:

function query(sql, callback) {
    client.query(sql, function (error, results, fields) {
        if (error) {
            //
        }
        if (results.length  > 0) {
            callback(results);
        }
    });
}

query("SELECT * FROM users", function(results) {
    self.users = results;
    console.log(self.users);
});

上面的代码只是一个概念.

Above code is just a concept.

这篇关于如何使用mysql包从nodejs获取结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆