在函数

时间:2016-03-13 18:22:10

标签: sql node.js tedious

我正在尝试使用节点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();   
});

它只打印'用户连接'

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

在Socket.io连接发生之前,可能已经建立了SQL连接。在这种情况下,connect事件可能已经发生。

如果您希望仅在收到Socket.io连接后建立SQL连接,那么您可能需要new Connection(config);,同时还要订阅connect事件。

请注意,您可能不希望为每个Socket.io连接建立SQL连接,就像使用该应用程序的多个人一样,在可能不需要的地方会发生很多额外开销。