首页 > 解决方案 > mssql and node, am i doing connection pools right?

问题描述

I am currently creating some web apps using nodejs. Currently I have different routes setup for my various web apps. I am wondering if I am using pooling correctly, or if parts of my code are redundant. Don't have any errors. Do I have to do "const pool = new.sqlConnectionPool" per route? Thanks!

var express = require('express');
var app = express();
app.use(express.static('./public'))
var sql = require('mssql/msnodesqlv8');
    var config = {
      driver: 'msnodesqlv8',
      connectionString: 'Driver={SQL Server Native Client 11.0};Server=SERVER;Database=SQL_Testing;Trusted_Connection=yes;',
    };


    app.get('/PickQueue', function (req, res) {
   
    var now = new Date();
    const pool = new sql.ConnectionPool(config).connect().then(pool => {
        return pool.request().query("query goes here")
        }).then(result => {
          let rows = result.recordset
          res.status(200).json(rows);
          console.log('Grabbing QUEUE info '+ now);
          sql.close();
        }).catch(err => {
          res.status(500).send({ message: `${err}`})
          sql.close();
        });
      
});


app.get('/PackingStation/dipline1/:packDateTotal', function (req, res) {
   
    var now = new Date();

    const packDateTotal = "'"+req.params.packDateTotal+"'"
    const queryString = "DECLARE @date AS Varchar(100) = "
    var finalquery = queryString.concat(packDateTotal)
    var finalquery = finalquery.concat("query here ")
    const pool = new sql.ConnectionPool(config).connect().then(pool => {
        return pool.request().query(finalquery)
        }).then(result => {
          let rows = result.recordset
          res.status(200).json(rows);
          console.log('Grabbing Dip1 Count info '+ now);
          sql.close();
        }).catch(err => {
          res.status(500).send({ message: `${err}`})
          sql.close();
        });
      
});

app.listen(5000, function () {
    console.log('Server is running..');
});

标签: sqlnode.jssql-server

解决方案


您想初始化池一次,然后在其他任何地方重用它,而不是每次有请求传入时

只需将池初始化移动到其他地方


推荐阅读