2016-04-12 16 views
0

Projemde mssql düğüm modülünü kullanıyorum, Tüm zaman uyumsuz çağrı yapmadığım zamana kadar iyi.mssql düğüm modülünde Bağlantı Hatası

Birden çok zaman uyumsuz çağrıda, başlatma "Bağlantı kapalı" bağlantı hatası veriyor. Birisi kodu inceleyebilir ve bana yardımcı olabilir. Gerçek, PlusPlus: true, devel

==== SqlServerDAL.js bu

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(); 

Ben

/* jslint vars dal.js gelen arıyorum bu Üstü dosya gibi bazı şeydir: gerçek, adı: true, girinti: 4, maxerr: 50 */ /* küresel gerektirir, modül, logger */

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(); 

// benim denetleyicisi

gibidir 0
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) 
}) 
    }) 
+0

Json yapılandırmasında da aynı sorun vardı. Denenmiş eski bağlantı dizgisi çalıştı. Bunu deneyin: mssql: // $ {cfg.db.user}: $ {cfg.db.password} @ $ {cfg.db.server}/SQLEXPRESS/$ {cfg.db.database} ' –

+0

üzgünüm! şanssızlık –

cevap

0

Evet Yanıtı aldım, Eşzamanlı çağrı nedeniyle yeni İstek (self.connection), eski işlev çağrısı tarafından kapatılan eski nesneyi alıyor. Bu nedenle Cevap, bunun gibi yeni bir istek oluşturmamız gerekiyor.

this._sqlConnection.connect().then(function (connection) { 
    var _sqlRequest = new sql.Request(connection); 
})