NODE.JS подключение к нескольким базам данных на лету дает мне ошибку

Я создаю API, в котором мне нужно на лету подключаться к другой базе данных, используя свои учетные данные. Мне нужно сделать функциональность похожей на MySql workbench - проверить соединение. В настоящее время мне нужно иметь дело с сервером MySql и MSSql. Я должен проверить все перестановки и комбинации на предмет неправильных учетных данных. т.е. если я передаю правильные учетные данные, например правильный хост, имя пользователя, пароль, порт, но неправильный соединитель вместо MySql, я передаю Mssql. Это вызывает исключение.

var db = {
   host           : data.hostName,
   port           : data.port,
   database       : data.database,
   username       : data.userName,
   password       : data.password,
   connector      : response[0].node_js_connector
 }

 var dataSource = new DataSource(db.connector, db);
 dataSource.on('connected', function (er) {  
   if(er) {
     console.log("reject");  
     reject(er);
   }
   else {
     console.log("resolve");
     resolve('Work With Database');
   }
 });
 dataSource.on('error', function (er) {
   if(er) {
     console.log("reject1");  
     reject(er);
   }
   else {
     console.log("reject1");
     reject('Not Connected Databse');
   }
 });

Я также поместил код в блок try / catch для обработки исключения. Однако я не могу его уловить. В настоящее время я получаю следующую ошибку:

throw new RangeError('Index out of range'); 

RangeError: Index out of range
    at checkOffset (buffer.js:968:11)
    at Buffer.readUInt8 (buffer.js:1006:5)

Было бы здорово, если бы кто-нибудь помог мне в решении этой проблемы.

Заранее спасибо.


person Maulik Kanani    schedule 01.11.2017    source источник
comment
Похоже, длина response равна 0. Как это определяется?   -  person spicypumpkin    schedule 01.11.2017
comment
@spicypumpkin во-первых, я не получил response. Экспозиция состоится до получения «ответа».   -  person Maulik Kanani    schedule 02.11.2017
comment
Что ж, все, что я могу вам сказать, это то, что вы пытаетесь получить 1-й элемент из пустого массива response, следовательно, IndexError. Вам нужно будет найти способ проверить, пуст ли массив или нет. Надеюсь, это поможет.   -  person spicypumpkin    schedule 02.11.2017
comment
@spicypumpkin Я могу получить ответ. Значение моего коннектора - либо mssql, либо mysql, в зависимости от передаваемых мной параметров. Я всегда получаю ответ. У меня есть полный объект БД. Единственное, что преднамеренно для целей тестирования, я передаю неправильный соединитель, и это вызывает ошибку. Я получаю ту же ошибку, что и github.com/patriksimek/node-mssql/issues/309 < / а>. Я хочу как-то справиться с этим.   -  person Maulik Kanani    schedule 02.11.2017
comment
@spicypumpkin, спасибо за помощь. теперь он работает правильно.   -  person Maulik Kanani    schedule 09.11.2017


Ответы (1)


Я использую метод process.on () для поворота на поворотную полосу uncaughtException. этот метод обрабатывает все исключения во время выполнения файла. Итак, за это время uncaughtException обработает мое Index out of range исключение. и отклонить мое подключение к источнику данных.

process.on('uncaughtException', function (err) {
    console.log('UNCAUGHT EXCEPTION - keeping process alive:', err); // err.message is "foobar"
    reject('Connected Faile');
});
person Maulik Kanani    schedule 14.11.2017