2012-08-03 3 views
3

einaros/ws에 구축 된 노드 ws 서버를 사용하고 있습니다. 해당 서버가 데이터베이스에 쿼리를 보내야합니다. 그 때문에 나는 felixge/node-mysql을 사용하고 있습니다.node-mysql connection.query()는 정의되지 않은 값을 반환합니다.

사용자가 서버에 연결할 때 클라이언트가 여전히 데이터베이스에 있는지 확인해야합니다. 쿼리가 완료

console.log("client-liste ist leer"); 
var query = "SELECT name FROM spieler WHERE name='"+id+"' AND passwort='"+passwort+"'"; 
var result = queryToDatabase(query); 
console.log(getTime() + "DB-Result Abfrage: " + result); 

그리고 코드 : 콘솔에서

var mysql = require('mysql'); 
var mysqlConnection = mysql.createConnection({ 
    host: dbHost, 
    user: dbUser, 
    password: dbPassword, 
}); 

function queryToDatabase(anfrage) { 
    mysqlConnection.connect(); 

mysqlConnection.query("USE " + db, function(err, rows, fields) { 
    if (err) throw err; 
}); 

mysqlConnection.query(anfrage, function(err, rows, fields) { 
     if (err) throw err; 
     console.log("rows as String - " + JSON.stringify(rows)); 
     return rows; 

    }); 

    mysqlConnection.end(); 
} 

로그는 다음과 같습니다

클라이언트 liste IST 여기

코드의 흥미로운 작품이다 leer
3.8.2012 - 15 : 29 : 0 - DB 결과 Abfrage : 정의되지 않음
행을 문자열로 - [{ "na 나 ":"루카스 "}] 함수가 정의되지 않은 반환 이유를



사람이 이해 하는가? 또한 데이터베이스 연결이 간단한 setTimout으로 끝나기를 기다리려고했지만 아무 것도 바뀌지 않았습니다!

답변

4

query에서 사용한 것과 같은 비동기 콜백 값을 반환 할 수 없습니다. queryToDatabase를 다시 작성하여 두 번째 인수로 콜백을 가져오고 쿼리가 성공하면 rows으로 호출해야합니다. 현실에서

queryToDatabase(query, function(result) { 
    console.log(getTime() + "DB-Result Abfrage: " + result); 
    }); 

, 그 콜백에 갈 필요가 쿼리 결과에 따라 모든 코드 : 그런 다음 기본 코드는 다음과 같다 필요가있다. 쿼리가 성공하면 오류 상태가 null 인와 더불어, 오류 상태결과 :

연습에서는 콜백이 개 인수를 할 것입니다.

관련 문제