node.js 全局连接已经存在.首先调用 sql.close() [英] node.js Global connection already exists. Call sql.close() first

查看:30
本文介绍了node.js 全局连接已经存在.首先调用 sql.close()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用来自 sql server 数据库的 node.js 创建 web 服务,在前端,当我同时调用这两个 web 服务时,它抛出一个错误全局连接已经存在.先调用sql.close().

I'm trying to create web services using node.js from an sql server database,in the frontend when i call those 2 webservices simultaneously it throws an error Global connection already exists. Call sql.close() first .

任何解决方案?

var express = require('express');
var router = express.Router();
var sql = require("mssql");

router.get('/Plant/:server/:user/:password/:database', function(req, res, next) {

    user = req.params.user;
    password = req.params.password;
    server = req.params.server;
    database = req.params.database;


    // config for your database
    var config = {
        user: user,
        password: password,
        server: server,
        database:database

    };

    sql.connect(config, function (err) {



        // create Request object
        var request = new sql.Request();

        // query to the database and get the records
        request.query("SELECT  distinct PlantName FROM MachineryStateTable"
            , function (err, recordset) {

                if (err) console.log(err)
                else {

                    for(i=0;i<recordset.recordsets.length;i++) {
                        res.send(recordset.recordsets[i])
                    }

                }
               sql.close();

            });

    });

});





router.get('/Dep/:server/:user/:password/:database/:plantname', function(req, res, next) {

    user = req.params.user;
    password = req.params.password;
    server = req.params.server;
    database = req.params.database;
    plantname = req.params.plantname;

    // config for your database
    var config = {
        user: user,
        password: password,
        server: server,
        database:database

    };

    sql.connect(config, function (err) {



        // create Request object
        var request = new sql.Request();

        // query to the database and get the records
        request.query("SELECT  distinct DepName FROM MachineryStateTable where PlantName= '"+plantname+"'"
            , function (err, recordset) {

                if (err) console.log(err)
                else {

                    for(i=0;i<recordset.recordsets.length;i++) {
                        res.send(recordset.recordsets[i])

                    }
                    sql.close();
                }

            });
    });
});



module.exports = router;

推荐答案

你必须创建一个 poolConnection试试这个:

You have to create a poolConnection try this:

new sql.ConnectionPool(config).connect().then(pool => {

  return pool.request().query("SELECT * FROM MyTable")

  }).then(result => {

    let rows = result.recordset
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.status(200).json(rows);
    sql.close();

  }).catch(err => {

    res.status(500).send({ message: `${err}`})
    sql.close();

  });

这篇关于node.js 全局连接已经存在.首先调用 sql.close()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆