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