我有这个功能,我需要返回true或false。问题是,它似乎没有正确行为。如果它确实返回false,它不会断开客户端,如果它确实返回true,它仍然会“console.log('断开客户端......')”我完全丢失了。 :(这是针对node.js mysql和socket.io
CODE:
if(!client_to_server_00(header,data,len)){
// should send the server a packet to terminate the connection on
their end...
// It should send 0x00 SERVER->CLIENT (will implement later)
console.log('Disconnecting client...'); // This always shows no matter what
client.emit('disconnect'); // **This does not work!
}else{
console.log('ID VERIFIED! WELCOME!');
}
=============================================== ===================================
// LOGIN INFORMATION
function client_to_server_00(header, data, len){
// We are already connected to the database
var z = decodeFromHex(data); // find the username
z = returnvalue(z,1,len); // the code was a little off (ill fix it later)
console.log(z); // make sure we have this correct
// In this example. The database returns 'oh' And z = 'oh'
client.query('USE '+TEST_DATABASE);
client.query(
'SELECT * FROM '+TEST_TABLE,
function selectCb(err, results, fields) {
if (err) {
throw err;
}
var first = results[0];
console.log('USRNAME: ['+first['name']+']'); // Make sure we have it
if(first['name'] == z){
console.log('Correct');
return true; // I need client_to_server_00 function to return true if correct
}else{
console.log('Incorrect');
return false; // I need client_to_server_00 function to return false if incorrect
}
})
};
答案 0 :(得分:1)
这是一个很常见的错误。您缺少非常基本的异步编程概念 - 您必须将回调传递给client_to_server_00
函数,并在完成异步填充(本例中为数据库连接)时调用它。