NodeJS MySQL 如何获取查询函数之外的结果

Nic*_*erg 6 javascript mysql connection-pooling node.js express

我似乎无法弄清楚如何在 NodeJS MySQL Pool 查询之外获得结果。这是一些示例代码,可以更好地解释我的意思。

var result = 'Hello world!';

var mysql = require('mysql');
var pool = mysql.createPool({
    connectionLimit : 100,
    host            : process.env.DB_HOST,
    user            : process.env.DB_USERNAME,
    password        : process.env.DB_PASSWORD,
    database        : process.env.DB_DATABASE
});

pool.query('SELECT * from user LIMIT 10', function (err, rows) {
    result = rows;
});

res.send(result);
Run Code Online (Sandbox Code Playgroud)

以上将返回“Hello world!” 而不是查询。

如果我在 pool.query 函数中使用 console.log(result) ,它会返回查询中的行,但我似乎无法在函数之外获取数据。我已经记录了这个函数并检查了所有相关的函数,我想我只是缺少一些基本的东西。

Bre*_*nan 1

您将在查询完成(并且调用回调)之前发送回结果。在回调中发送结果将解决该问题:

pool.query('SELECT * from user LIMIT 10', function (err, rows) {
    result = rows;
    res.send(result);
});
Run Code Online (Sandbox Code Playgroud)

正如亚伦指出的,这是一个常见问题。可以在这里找到更彻底的答案。