Можно ли поместить слушатели событий подключения и запроса Tedious в отдельный модуль для Node.js? - PullRequest
0 голосов
/ 30 мая 2018

Это мой первый вопрос, поэтому прошу прощения за любые отклонения от этикета.

Я новичок в 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.Я пытался добавить export и module.exports перед этим несколькими способами, но безуспешно.Прослушивание события и не нормальная функция ставят меня в тупик.

Как бы я мог получить прослушиватели событий в отдельном файле?Я также пытаюсь сделать это как можно более ванильным, так что на данный момент я просто использую Node.js и Tedious.

1 Ответ

0 голосов
/ 30 мая 2018

изменить

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}
...