Я использую модуль узла mssql в моем проекте, все хорошо до тех пор, пока я не сделаю асинхронный вызов.Ошибка подключения в модуле узла mssql
При множественном вызове асинхронного вызова его запуск дает мне ошибку подключения «Соединение закрыто». может кто-то заглянуть в код и помочь мне.
==== SqlServerDAL.js некоторые вещи, как этот
var sql = require('mssql');
var _sqlConfig = require("../../../../config/dbconfig.json");
function SqlServerDAL() {
this._sqlConfig = _sqlConfig;
this._sqlConnection = null;
}
/**
* @param : request > request or query parmanter to excute sql query
* @param : callback > after execution neect to send response back to serr
* @param : sqlReqConf > to build the requst object from the configuration
*/
SqlServerDAL.prototype.executeRequest = function (request, callback) {
var self = this;
self._sqlConnection = new sql.Connection(this._sqlConfig);
this._sqlConnection.connect().then(function() {
var _sqlRequest = new sql.Request(self._sqlConnection);
try {
_sqlRequest.input('someVar','someValue')
_sqlRequest.execute('myStoreProc').then(function (recordsets) {
callback(null, recordsets);
}).catch(function (sqlEx) {
callback({
code: "ERR0003",
message: sqlEx.message,
type: sqlEx.name
}, null);
});
} catch (sqlEx) {
callback({
code: "ERR0004",
message: sqlEx.message,
type: sqlEx.name
}, null);
}
}).catch(function (sqlEx) {
callback({
code: "ERR0001",
message: sqlEx.message,
type: sqlEx.name
}, null);
});
};
module.exports = new SqlServerDAL();
это выше файла Я звоню из dal.js
/* JSLint VARS: истинные, PlusPlus: правда, разви: правда, номен: правда, отступы: 4, MaxErr: 50 */ /* глобальный требуют, модуль, регистратор */
var Q = require("q");
var sqlServerDAL = require('./sqlDAL/sqlServerDAL');
/**
*
* @constructor:
*/
function DAL() {}
/**
* @param : customRequst : this json object will come from respective dbschema files,
* This object bening used to build sqlRequest object
*/
DAL.prototype.executeRequest = function (customRequest) {
var deferred = Q.defer();
sqlServerDAL.executeRequest(customRequst, function (sqlEx, recordsets) {
if (recordsets) {
logger.info("_sqlRequest is successfully executed:" + JSON.stringify(recordsets));
deferred.resolve(recordsets);
} else if (sqlEx) {
deferred.reject({
code: sqlEx.code,
message: sqlEx.message,
type: sqlEx.name
});
}
});
return deferred.promise;
};
module.exports = new DAL();
// мой контроллер, как
app.use("mycontroller", function(req, res, next){
var dal = new Dal();
dal.executRequest(function(result){
res.send(result)
} , function(err){
console.log("got some error" + errr)
})
})
У меня была такая же проблема с конфигурацией json. Пробовал устаревшую строку соединения, которая сработала. Попробуйте: 'mssql: // $ {cfg.db.user}: $ {cfg.db.password} @ $ {cfg.db.server}/SQLEXPRESS/$ {cfg.db.database}' –
извините! Невезение –