Как закрыть соединение в node js мс sql? - PullRequest
0 голосов
/ 28 февраля 2020

Я использую mssql npm для подключения к SQL Серверу. Когда я подключаюсь к базе данных и получаю или публикую данные, соединение еще открыто. Как закрыть соединение после каждого запроса?

Я использую этот тип запроса:

router.get('/getnotification/:userid',async(req,resp,next)=>{
    (async function(){
        let pool = null;
        try{
            pool = await connection
            let result = await pool.request()
            .input('input_id',sql.BigInt,req.params.userid)
            .query(`exec showNotification 0,@input_id`)

            if(result){
                resp.status(200).send(result.recordset).end;
            }
            //  pool.close()
        }catch(err){
                resp.status(500).send(err).end;
            //  pool.close()  
        }

    })()
})

Я также использую pool.close() после выполнения запроса, но для следующего запроса соединение установлено. закрыто.

1 Ответ

1 голос
/ 28 февраля 2020

вы можете создать функцию промежуточного программного обеспечения для закрытия пула и использовать ее после привязки pool для запроса obj,

const closePoolMiddleware = function (req, res, next) {

  if(!req.pool) {
    next("pass error to express")
  }
  req.pool.close()
  next()
})

, а затем

router.get('/getnotification/:userid',async(req,resp,next)=>{
    (async function(){
        let pool = null;
        try{
            pool = await connection
            let result = await pool.request()
            .input('input_id',sql.BigInt,req.params.userid)
            .query(`exec showNotification 0,@input_id`)

            if(result){
                resp.status(200).send(result.recordset).end;
            }
            //  pool.close()
        }catch(err){
                resp.status(500).send(err).end;
            //  pool.close()  
        }

    })()
}, closePoolMiddleware)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...