私はしばらくこのままでいましたが、何が間違っているのか分かりません。私はMySQLの関数を実行するDatabse.jsと呼ばれる別のクラスを持っています、それは接続、クエリなどを管理しています。私はそれを返す必要があります1行の情報フォームを取得しようとしている(正しいユーザー名とパスワード)しかし、それは変数が定義されていないと言います。私が関数を返す前にオブジェクトのフィールドを関数に記録すると、それらはすべて正常に動作します。ここで関数の戻り値は定義されていません
もう少し文脈を持つコードです:問題を抱えたオブジェクトを呼び出す関数である
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);
}
});
、ここでは(私は私のモジュールを用意しましたDatabse.jsからcheckAccount()関数です。輸出それは場合に役立ちます):
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: