javascript - 是否可以将 Tedious 连接和请求事件监听器放在 Node.js 的单独模块中?

标签 javascript node.js events node-modules tedious

这是我在这里的第一个问题,所以请原谅礼节上的任何异常。

我是 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 返回一个带有连接的 Promise,这样您就不会在失败/尚未连接的连接上进行操作。有点像

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}

关于javascript - 是否可以将 Tedious 连接和请求事件监听器放在 Node.js 的单独模块中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612401/

相关文章:

javascript - 在asp.net mvc中使用ajax填充div

javascript - 如何在onclick函数之外访问数据

node.js - css 未在所有带有express-handlebars 的路线上呈现

c# - 使用完成事件时如何避免意大利面条代码?

javascript - img onload 函数有时未定义

javascript - 单击 different-2 缩略图时页面跳转

javascript - NodeJs + Mysql 查询执行太晚(延迟)

javascript - 为什么我的 Node 事件回调在事件中显示为未定义?

objective-c - UIApplication sendEvent 不适用于 popViewControllerAnimated

jquery - 如何将 jQuery 事件附加到新元素?