Sql server 全局连接已存在。问题node.js

Sql server 全局连接已存在。问题node.js,sql-server,node.js,Sql Server,Node.js,我已经使用下面的代码将MSSQl与node.js连接起来 var sql = require('mssql') var config ={ server:'xxxx', database:'xxxx', user:'xxx', password:'xxx', port:'xx' };

我已经使用下面的代码将MSSQl与node.js连接起来

           var sql = require('mssql')
            var config ={
            server:'xxxx',
            database:'xxxx',
            user:'xxx',
            password:'xxx',
            port:'xx'
            };
            sql.connect(dbconfig, function (err) {

                if (err) console.log(err);

                  var sqlquery='';
                const request = new sql.Request();
                if(condition)
        {
            //query to the database and get the repo value
                sqlquery='select * from verylargetable'; 
                request.query(sqlquery, function (err, result) {
                    if (err) console.log(err)
                   var repo=result.recordset[0].Repo;

         //query to the database and get the comm value
                  sqlquery="select commit from verylargetable where Repo='"+repo+"'"; 
                request.query(sqlquery, function (err, result) {
                    if (err) console.log(err)
                  var comm=result.recordset[0].Comm;
                 if (result.recordset.length  > 0) 
        {
//query to the database and update the table
         sqlquery="UPDATE verylargetable set Repo='"+repo+"', WHERE Comm='"+comm+"'";
        request.query(sqlquery, function (err,result){
                 if (err) console.log(err)
                   console.log("record(s) updated");
               });
              }
           });
         });
        }
        else
        {
        //query to the database and get the repo value
                sqlquery='select * from verylargetable'; 
                request.query(sqlquery, function (err, result) {
                    if (err) console.log(err)
                   var repo=result.recordset[0].Repo;
    //query to the databaseto insert new record
        sqlquery ="INSERT INTO verylargetable VALUES("+repo+"','"+comm+"',1)"; 
    request.query(sqlquery, function (err, result) {
            if (err) console.log(err)
           });
        });
       }
    });
根据某些条件必须执行查询。执行时,这些查询会正确更新。但有时会遇到以下问题

全局连接已存在。首先调用sql.close()。

当我在最后使用sql.close()时,下次无法初始化连接

面向连接已关闭问题

我有单独的数据库更改方法。我需要在方法开始时建立连接,并在结束时关闭。在这两者之间,我必须执行所有查询。
请告诉我如何正确打开和关闭连接?

sql.connect返回连接,要关闭连接,只需在结果上调用close

var pool = sql.connect(dbconfig, function (err) {
    if (err) console.log(err);
    const request = new sql.Request()
    var sqlquery='select * from verylargetable';
    request.query(sqlquery, function (err, result) {
        if (err) console.log(err)
    });
});

pool.close();

我面临着同样的问题,并通过以下实施方式解决了它, 用于处理的全局连接已存在。首先调用sql.close()我们需要为mssql npm版本4.0.4创建一个连接池

const config = {
user: '**',
password: '**',
server: '** or localhost',
database: '**',
pool: {
    max: 10,
    min: 0,
    idleTimeoutMillis: 30000
}}
router.get('/SQLConnection1', function (req, res, next) {
const pool1 = new sql.ConnectionPool(config, err => {
    // ... error checks 

    // Query 

    pool1.request() // or: new sql.Request(pool1) 
        .query('SELECT ID,Name  from Avatar', (err, result) => {
            // ... error checks 

            console.dir(result)
            res.json({'Result': result})
        })
})
pool1.on('error', err => {
    // ... error handler 
    console.log('Error ' + err);
})

}))

可能重复您使用以下解决方案的尝试??嗨@chetan mekha我是nodejs的新手。无法了解路由器也已明确更新了要求。你能帮我把它弄过去吗