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
这是否会提取我在第一个查询中返回的客户Nikolas
的orderId
?
书面查询会顺序运行吗?
这真的取决于你使用的模块。 其中最常用的驱动程序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驱动程序模块,但大多数情况下,他们不希望通过同步数据库调用阻止其进程。