来自Java编程语言,其中所有可以在方法中使用的信息必须是类的一部分,或者通过参数传递,我对JavaScript神奇地生成它非常重要的数据感到困惑。
在这种情况下,我正在使用Socket.IO并尝试在连接后调用login-method,现在我可以使用匿名函数,但我个人认为它们真的很难看。
这是我的代码:
socketIO.sockets.on('connection', function(socket) {
console.log("Connection maid.");
socket.on('login', login);
});
function login(json) {
sqlConnection.query('select * FROM Accounts', function(err, rows, fields) {
if(err) throw err;
for(var row in rows) {
if(rows[row].Username == json.username) {
console.log("Exists");
socket.emit('login', {nuel: ''});
}
}
});
}
正如您所看到的,只要套接字收到登录消息,就会调用login
函数,并且json对象会神奇地传递给它。我不知道它来自何处或是什么产生它,我也不知道如何将额外的参数传递给该方法,因为它会中断/覆盖magic
数据。
我遇到的错误是当前上下文中不存在 socket ,因为它没有传递给login函数,但是当我尝试传递它时,保存的对象因为json
完全根除了存在......以及这里的数据来自何处。
我根本不理解这一点,如何在不完全破坏所有内容的情况下传递此信息来调用该方法。