2012-02-05 7 views
0

node.js 용 mysql 드라이버를 사용하여 데이터베이스에서 데이터를로드하고 있습니다. https://github.com/felixge/node-mysqlNode.js - 데이터베이스 (mysql)에서 데이터 가져 오기 - 지연

배열에 데이터를로드하려고합니다. 배열에 데이터를로드 할 때 지연이 발생하고 배열이 비어 있습니다.

데이터를 검색 한 다음 행을 쓰고 싶습니다. console.log ("END QUERY"); console.log (users);

var users = []; 

client.query(
    'SELECT * FROM users', 
    function selectCb(err, results, fields) { 
    if (err) { 
     throw err; 
    } 

if (results.length > 0) { 
      var reader = results[0]; 
      console.log("ID: " + reader['id']); //ADD string - 'ID: 1' 
      users = [reader['id']] 
     } 
    } 
); 

console.log("END QUERY"); 

console.log(users); 

출력 :

쓰기 LINE :

END QUERY 
[] 
ID: 1 

답변

2

이 노드가 어떻게 작동 - 비동기 모델을 사용. 먼저 모든 코드가 console.log(users)을 포함하여 작성된대로 실행됩니다. 이 시점에서 users은 빈 배열입니다.

모든 명령형 명령이 실행 된 후에 만 ​​selectCb 함수와 같은 콜백이 실행됩니다. 이 콜백이 실행되면 users에 액세스 할 수 있습니다.

실제로 Node의 전체적인 목적과 목적은 여기에 있습니다. 기본 사항을 이해하는 것은 매우 중요합니다. 당신은 그것에 대해 자세한 내용을보실 수 있습니다 : http://shinetech.com/thoughts/articles/139-asynchronous-code-design-with-nodejs-

또한 라이언 달에서 노드를 소개하는이 비디오를 추천 한 기타 : 특정 경우 http://www.youtube.com/watch?v=jo_B4LTHi3I

, 나는의 본문에 console.log("END QUERY")console.log(users) 라인을 이동 것을 selectCb 기능.

관련 문제