Node.js MySQL查询执行stream程

如果我有一个MySQL查询返回一个将在WHERE子句中再次使用的值,这将与Node.js的asynchronous执行stream程一起工作吗?

通常情况可能如此:

 SELECT customerId FROM Customers WHERE customerName=nikolas 

然后结果将被存储如下:

 var customerId = customerId 

并在另一个查询中重用:

 SELECT orderId FROM Orders WHERE customerId=customerId 

这是否会提取我在第一个查询中返回的客户NikolasorderId

书面查询会顺序运行吗?

这真的取决于你使用的模块。 其中最常用的驱动程序node-mysql是asynchronous的,因此代码将不会顺序运行。 相反,你必须使用callback:

 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中,您通常需要编写asynchronous代码。 在某处可能有一个同步的MySQL驱动程序模块,但大多数情况下,他们不希望通过同步数据库调用阻止其进程。