저는 한동안 붙어 있었고 무엇이 잘못되었는지 알지 못합니다. 나는 MySQL 함수를 실행하는 Databse.js라고 불리는 별도의 클래스를 가지고있다. 연결, 쿼리 등을 관리한다. 나는 올바른 형태의 사용자 이름과 패스워드를 가진 사용자가 반환해야하는 1 행의 정보를 얻기 위해 노력하고있다.) 그러나 그것은 변수가 정의되지 않는다고 말한다. 함수를 반환하기 전에 객체 필드를 로그하면 모든 것이 잘 동작합니다. 여기 함수에 대한 반환 값은 정의되지 않았습니다
좀 더 컨텍스트 코드입니다 : Databse.js에서 checkAccount() 함수를 여기에, 고생 한 객체를 호출 할 수있는 기능 즉socket.on('loginAttempt', function(data) {
//Check credentials with database...
try {
var fuser = Database.checkAccount(data.username, data.password);
if (fuser === undefined) {//This is always being called
console.log("fuser is undefined");//For debug only
}
} catch(err) {
console.log(err.message);
}
try {
if (fuser !== undefined) {
socket.emit('loginMessage', {status:true});
socket.id = Math.random();
SOCKET_LIST[socket.id] = socket;
var player = Player(socket.id, fuser.Username, fuser.Rank, fuser.Points);
PLAYER_LIST[socket.id] = player;
return;
}
socket.emit('loginMessage', {status:false});
} catch(err) {
console.log(err.message);
}
});
(내 모듈을 포함 시켰습니다. 수출이 도움이 된 경우) :
function checkAccount(username, password) {
con.query("SELECT * FROM Userbase WHERE Username='" + username + "' AND Password='" + password + "';", function(err, rows) {
if (err) throw err;
if (rows.length > 0) {
var returnedUser = new User();
returnedUser.Username = username;
returnedUser.Password = password;
returnedUser.Rank = rows[0].Rank;
returnedUser.Points = rows[0].Points;
return returnedUser; // This should return the User object however when run in my app.js it is undefined
}
return null;
});
은}
module.exports.mysql = mysql;
module.exports.con = con;
module.exports.checkAccount = checkAccount;
module.exports.User = User;
module.exports.init = init;
어떤 도움을 주시면 감사하겠습니다! c :