2017-01-31 4 views
0

Я использую модуль узла node-mssql для подключения SQL Server.Основное соединение с узлом-mssql

Я создаю обещание bluebird, и в конце это обещание закрывает соединение. Я сделал это, потому что я не знаю, как сделать основное соединение, но я не думаю, что открытие/закрытие соединения. Каждый запрос является хорошей идеей.

function connection() { 
    let promise = sql.connect('...'); 
    promise.catch(function (err) { 
     console.log('********** Error on connecting **********'); 
     console.log(err); 
     console.log('---------- Error on connecting ----------'); 
    }) 
    .finally(function() { 
     sql.close(); 
    }); 
    return promise; 
}; 

var query = connection().then(function() { 
    new sql.Request() 
    .input('foo', mssql.NVarChar, 'bar') 
    .query('...') 
    .then(function (out) { 
    //... 
    }) 
    .catch(function (err) { 
    console.log('********** Error on query **********'); 
    console.log(err); 
    console.log('---------- Error on query----------'); 
    }); 
}); 

Есть ли способ иметь основное соединение?

ответ

0

Ну ... Я решаю это, добавляя флаги и функции, под своим кодом, я надеюсь, что это поможет, или прокомментируйте, если есть лучший способ.

var mssql = require('mssql'); 
var sql = {} 
sql.connected = false; 
sql.connect = function() { 

let promise = mssql.connect(SQL.String); 

promise.catch(function (err) { 

    // handling error 
    mssql.close(); 
    sql.connected = false; 
}); 
    return promise; 
}; 
sql.Request = function() { 

return new Promise(function (resolve, reject) { 


    if (!sql.connected) { 

     sql.connect() 
     .then(function() { 

      sql.connected = true; 
      resolve(new mssql.Request()); 
     }); 
    } else { 

     resolve(new mssql.Request()); 
    } 
});};