Node.js MySQL查询执行流程

时间:2013-10-07 00:07:52

标签: javascript mysql node.js

如果我有一个MySQL查询返回一个将在WHERE子句中再次使用的值,那么这将与Node.js的异步执行流程一起使用吗?

通常可能是这种情况:

SELECT
customerId FROM Customers
WHERE customerName=nikolas

然后结果将如下存储:

var customerId = customerId

并在另一个查询中重复使用:

SELECT
orderId FROM Orders
WHERE customerId=customerId

这会抓取我在第一个查询中返回的客户orderId的{​​{1}}吗?

写入的查询会按顺序运行吗?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您使用的模块。最常用的驱动程序之一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驱动程序模块,但大多数情况下他们不希望使用同步数据库调用阻止其进程。