Javascript 函数的返回值未定义

Javascript 函数的返回值未定义,javascript,mysql,node.js,socket.io,Javascript,Mysql,Node.js,Socket.io,我在这个问题上纠结了一段时间,不知道出了什么问题。我有一个单独的类叫database.js,它运行MySQL函数,它管理连接、查询等。我一直试图让它从它应该返回的1行(具有正确用户名和密码的用户)获取信息,但它说变量未定义。如果在返回函数之前将objects字段记录在函数中,它们都可以正常工作 下面是包含更多上下文的代码: socket.on('loginAttempt', function(data) { //Check credentials with database...

我在这个问题上纠结了一段时间,不知道出了什么问题。我有一个单独的类叫database.js,它运行MySQL函数,它管理连接、查询等。我一直试图让它从它应该返回的1行(具有正确用户名和密码的用户)获取信息,但它说变量未定义。如果在返回函数之前将objects字段记录在函数中,它们都可以正常工作

下面是包含更多上下文的代码:

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);
    }
});
这是调用问题对象的函数,下面是database.js中的checkAccount()函数(如果有帮助,我已经包括了module.exports):

}


任何帮助都将不胜感激!c:

您的
函数检查帐户(用户名、密码){
没有返回值

只有传递给
query(query,callback)
的函数才会返回值。由于查询函数是异步的,因此它应该在调用准备就绪时返回或调用回调。您应该在此处阅读有关回调和承诺的更多信息:

根据您使用的数据库实现,查询函数可能会返回一个承诺,您可以这样做:

function checkAccount(username, password) {
    return con.query(...
以这种方式使用承诺

checkAccount(xxx).then(function(data) {
    // your data is here
});
function checkAccount(username, password) {
    return con.query(...
checkAccount(xxx).then(function(data) {
    // your data is here
});