NodeJS MySQL如何获得查询function以外的结果
我似乎无法弄清楚如何获得NodeJS MySQL池查询以外的结果。 下面是一些示例代码,以更好地解释我的意思。
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);
以上将返回“Hello world!” 而不是查询。
如果我console.log(结果)在pool.query函数内,它返回查询中的行,但我似乎无法获得该函数以外的数据。 我logging了function,并检查了所有相关的function,我想我只是缺less一些基本的东西。
在查询结束之前(以及调用callback),您将发送结果。 在您的callback中发送结果将解决问题:
pool.query('SELECT * from user LIMIT 10', function (err, rows) { result = rows; res.send(result); });
正如亚伦指出的那样,这是一个普遍的问题。 更彻底的答案可以在这里find。
池查询function是asynchronous的。 这意味着你的代码不会按照你声明的语句的顺序执行。
您启动一个查询,并指定查询asynchronous操作完成时应运行的callback函数。
res.send将在查询和callback声明之后立即运行,并且callback将在稍后运行。 当你设定的结果,你已经发送它。
尝试在callback中移动res.send。
pool.query('SELECT * from user LIMIT 10', function (err, rows) { res.send(rows); });
- 节点,Express 3和Passport:login表单不能正常工作
- 用户pipe理节点js用express,mongodb作为服务器数据库
- expression – 如何定期检查自定义事件并自动采取行动
- Node.js / Express – 通过请求/响应对象修改响应模板上下文
- 如何捕捉node.js中的http客户端请求exception
- 我如何设置node-mongod-native的日志logging?
- 即使使用sudo nohup后,Amazon EC2 NodeJS服务器也会在2天后自行停止
- 自动redirectlogin用户nodejs passport.js
- Expressjs或Koajs中静态文件的相对path