2016-07-05 2 views
0

연결 쿼리 내에서 변수를 선언하여 작동하도록하려고합니다. 나는 성공적으로이 작업을 수행 할 수있는 방법 ReferenceError: row is not definedMySQL 쿼리 노드 내에서 전역 변수 선언하기

:

var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    res.send(row); 
}); 

console.log(row[0].amount); 

그것은이 오류를 반환합니다.

+0

변수를 함수에 선언하면 console.log() 호출에서 변수가 보이지 않을 것입니다 ... –

+0

함수에서 변수를 가져 오는 방법이 있습니까? – swagster

답변

0
var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    console.log(row[0].amount) 
    res.send(row); 
}); 

당신은이 선언 된 함수 외부 row 변수에 액세스 할 수 없습니다. 그리고 비록 당신이 row을 (콜백 외부에서) 전역 적으로 선언했다하더라도, 게시 한 코드가 비동기 적으로 실행되기 때문에 작동하지 않을 것입니다. 쿼리 콜백 함수는 코드에서 console.log(row[0].amount); 뒤에 실행되므로 행 참조를 사용할 수 없습니다.

게시 한 코드 스 니펫이 전체 코드 인 경우 분명히 row 변수를 선언 할 필요가 없습니다.

+0

이렇게 쿼리 외부로 가져 오는 방법은 없습니다. – swagster

+0

내가 무엇을하려고하는지 모르겠다. 다른 곳에서 행을 참조하려면 자신의 콜백을 사용하고 거기에 행을 전달해야한다. 위의 행을 반환하는 Promise로 구현하고 실제로 한 번 더 처리해야한다. 데이터를 가지고 있거나 추가 논리가 콜백 결과에 의존하는 상황을 처리하는 비동기 모듈을 보아라. – razakj

+0

그 쿼리 밖에서'rows' 데이터를 사용하고 싶습니다. – swagster