节点.js MySQL 查询执行流程
Node.js MySQL query execution flow
如果我有一个MySQL查询返回一个将在WHERE
子句中再次使用的值,这是否适用于Node.js的异步执行流程?
通常可能是这种情况:
SELECT
customerId FROM Customers
WHERE customerName=nikolas
然后结果将像这样存储:
var customerId = customerId
并在另一个查询中重用:
SELECT
orderId FROM Orders
WHERE customerId=customerId
这会获取我在第一个查询中返回的客户Nikolas
的orderId
吗?
书面查询会按顺序运行吗?
这实际上取决于您使用的模块。最常用的驱动程序之一node-mysql是异步的,因此代码不会按顺序运行。相反,您必须使用回调:
var query1 = 'SELECT customerId FROM Customers WHERE customerName = nikolas';
var query2 = 'SELECT orderId FROM Orders WHERE customerId = ';
connection.connect();
connection.query(query1, function(err, rows, fields) {
var customerId = rows[0].customerId;
connection.query(query2 + customerId, function(err, rows, fields) {
connection.end();
// results are here
});
});
在 Node.js 中,通常需要编写异步代码。某处可能有一个同步 MySQL 驱动程序模块,但大多数人都没有想要通过同步数据库调用阻止其进程的情况。
在@hexacyanide编写的代码中。在第一个查询运行之前,第二个查询不会运行,因为代码正在等待第一个查询的响应。这样就按顺序回答了你的疑问。而且您也不需要为此使用两个查询。只需联接两个表,即可在单个查询中获取结果。像这样:
SELECT orders.orderId
FROM Orders orders
JOIN Customers customers
ON orders.customerId = customers.customerId
WHERE customers.customerName='Nikolas'
相关文章:
- 如何在回调函数中执行流
- 在node.js-mysql中执行UPDATE查询不起作用
- 我如何才能实时查看在Postgres上执行的查询
- 在谷歌自定义搜索引擎 V2 代码中执行默认查询
- 使用脚本定期执行 mysql 查询
- node.js 和 express :顺序执行流一个接一个的 mongodb 查询请求
- 如何在角度 JS 中执行基于查询字符串的 API 调用
- 从 PHP 读取变量并使用 js 执行选择查询
- 有没有办法在执行 xpath 查询时忽略大小写
- 在执行mysql查询后刷新图表(javascript)
- 余烬 了解路由/控制器之间的执行流
- 如何使用本机节点驱动程序在节点服务器上执行mongo查询字符串
- 无法使用mysql模块在node.js中执行Sql查询
- 发送数据到bootstrap模式并执行mysql查询
- 同步执行Sequelize查询
- 如何使用AJAX在选择选项时执行PHP查询
- 给我一个用Javascript对KML文档执行xpath查询的例子
- 对数据执行一系列查询,允许出现故障
- 是否可以在Internet Explorer 8+中对客户端XSL转换的结果执行XPATH查询?
- 嵌套的执行流控件