2013-10-07 4 views
1

WHERE 절에서 다시 사용할 값을 반환하는 MySQL 쿼리가있는 경우이 작업은 Node.js의 비동기 실행 흐름과 함께 작동합니까?Node.js MySQL 쿼리 실행 흐름

SELECT 
customerId FROM Customers 
WHERE customerName=nikolas 

가 그런 결과가과 같이 저장됩니다 :

var customerId = customerId 

그리고 다른 쿼리에서 재사용 :

SELECT 
orderId FROM Orders 
WHERE customerId=customerId 

이가 가져옵니다

일반적으로이 경우 수 있습니다 첫 번째 쿼리에서 반환 된 고객 NikolasorderId은 무엇입니까?

순차적 쿼리가 실행됩니까?

답변

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 드라이버 모듈이 있지만 대부분의 경우 동기식 데이터베이스 호출로 프로세스를 차단하려는 경우가 없습니다.

+0

동기식 의미 순차적으로 나는 계산할 것입니다. 좋아요? –