我正在尝试使用节点js中的Tedious连接到本地SQL Server数据库。
function connectToSql() {
sqlConnection.on('connect', function (err) {
// If no error, then good to go...
if (err) {
console.log(err);
} else {
console.log('connected to SQL!');
executeSelectStatement();
}
});
}
当我在声明后立即调用此函数时,它的工作正常并打印'连接到SQL!'。但是当我调用SocketIO.Server的这个函数“连接”事件时,它没有进行sql调用。我的代码如下:
ioServer.on('connection', function (socket: SocketIO.Socket) {
console.log('a user connected');
connectToSql();
});
它只打印'用户连接'
为什么会发生这种情况?
答案 0 :(得分:1)
在Socket.io连接发生之前,可能已经建立了SQL连接。在这种情况下,connect
事件可能已经发生。
如果您希望仅在收到Socket.io连接后建立SQL连接,那么您可能需要new Connection(config);
,同时还要订阅connect
事件。
请注意,您可能不希望为每个Socket.io连接建立SQL连接,就像使用该应用程序的多个人一样,在可能不需要的地方会发生很多额外开销。