Tedious connection 和 request 事件侦听器是否可以放在 Node.js 的单独模块中?

Can Tedious connection and request event listeners be put in a separate module for Node.js?

这是我第一次在这里提问,如有不当之处,敬请谅解。

我对 Node.js 和一般的后端编程不熟悉。 现在我正在使用 Node 和 Tedious 连接到本地 SQL 服务器。我想保持我的 main.js 文件干净,所以我试图将与我的 SQL 连接相关的所有内容放在一个单独的 js 文件中。下面是我的 main.js.

最简单的形式
var http = require('http');
var sqlmodule = require('./SQLconnection');
http.createServer(function (req, res) {
  sqlmodule.makeConnection();
}).listen(8080);

然后我有了我的 SQLconnection.js 文件。

var Connection = require('tedious').Connection;
exports.makeConnection = function () {
  var config = {
      userName: 'XXXXXX',
      password: 'XXXXXX',
      server: 'XXXXXX'
  };
  var connection = new Connection(config);
};

//The below code is my event listener but I don't know how 
//to incorporate it as part of the module.
connection.on('connect', function(err) {
  if (err) {
     console.error('Connection error', err);
  } else {
     console.log('Connected');
  }
});

当文件中不存在侦听器时,我没有遇到任何问题,但我找不到将其作为 SQLconnection.js 模块一部分的方法。我试过以几种方式在它之前添加 exports 和 module.exports 但没有成功。它监听一个事件而不是一个正常的功能让我很困惑。

我将如何在单独的文件中获取事件侦听器? 我也在尝试尽可能简单地解决这个问题,所以我现在只使用 Node.js 和 Tedious。

改变

exports.makeConnection = function () {

function makeConnection() {
...
module.exports = {makeConnection}

作为附加更改,您需要将连接侦听器放在与连接变量相同的范围内。就我个人而言,我也会让 makeConnection return 成为连接的 Promise,这样您就不会在 failed/not 尚未连接的连接上进行操作。像

var Connection = require('tedious').Connection;

function makeConnection() {
  var config = {
      userName: 'XXXXXX',
      password: 'XXXXXX',
      server: 'XXXXXX'
  };
  return new Promise((resolve, reject) => {
    var connection = new Connection(config);

    connection.on('connect', function(err) {
      if (err) return reject(err);
      resolve(connection);
    });
  }
};
module.exports = {makeConnection}