加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何在Express 4 Web应用程序中跨多个路由使用单

发布时间:2020-12-12 16:29:36 所属栏目:MsSql教程 来源:网络整理
导读:我想在Node JS Express 4 Web应用程序中使用 node-mssql作为MSSQL数据库连接器.路由处理程序逻辑在单独的文件中处理. 如何创建单个/全局连接池并将其用于处理路由逻辑的多个文件?我不想在每个路由处理函数/文件中创建一个新的连接池. 解决方法 实际上我问这
我想在Node JS Express 4 Web应用程序中使用 node-mssql作为MSSQL数据库连接器.路由处理程序逻辑在单独的文件中处理.

如何创建单个/全局连接池并将其用于处理路由逻辑的多个文件?我不想在每个路由处理函数/文件中创建一个新的连接池.

解决方法

实际上我问这个问题是自己回答的,因为我相信我有一个值得分享的答案,而我在其他地方找不到文件化的解决方案.另外在几个问题( #118,#164,#165)在node-mssql中讨论了这个话题.

这是我的解决方案:

在server.js中

var express = require('express');
var sql     = require('mssql');
var config  = {/*...*/};
//instantiate a connection pool
var cp      = new sql.Connection(config); //cp = connection pool
//require route handlers and use the same connection pool everywhere
var set1    = require('./routes/set1')(cp);
var set2    = require('./routes/set2')(cp);

//generic express stuff
var app = express();

//...
app.get('/path1',set1.get);
app.get('/path2',set2.get);

//connect the pool and start the web server when done
cp.connect().then(function() {
  console.log('Connection pool open for duty');

  var server = app.listen(3000,function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s',host,port);

  });
}).catch(function(err) {
  console.error('Error creating connection pool',err);
});

在routes / set1.js

var sql     = require('mssql');

module.exports = function(cp) {
  var me = {
    get: function(req,res,next) {
      var request = new sql.Request(cp);
      request.query('select * from test',function(err,recordset) {
        if (err) {
          console.error(err);
          res.status(500).send(err.message);
          return;
        }
        res.status(200).json(recordset);
      });
    }
  };

  return me;
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读