【问题标题】:Global objects with Node.js + Express使用 Node.js + Express 的全局对象
【发布时间】:2014-12-20 13:33:02
【问题描述】:

我正在学习 Node.js + Express,编写一个基本的登录示例。我的/login 路由设置在 routes/login.js 文件中:

var express = require('express');
var router = express.Router();

var mysql = require('mysql');
var connectionpool = mysql.createPool({
    host     : 'localhost',
    user     : 'user',
    password : 'pass',
    database : 'database'
});

router.post('/', function(req,res){ 
    connectionpool.getConnection(function(err, connection) {
        if (err) {
            console.error('CONNECTION error: ',err);
            res.statusCode = 503;
              res.send({
                result: 'error',
                err:    err.code
            });
        } else {
            // Do something
        }
    });
});

module.exports = router;

我想知道:如何使 mysqlconnectionpool 在整个应用程序中可见?我不想在我将创建的每个路由文件上重新声明它们。我正在寻找类似于 include 或 require 方法的东西。

有什么想法吗?

【问题讨论】:

  • 把它放在一个单独的 Node.js 模块中并在所有文件中都需要它?

标签: javascript mysql node.js


【解决方案1】:

创建一个单独的模块作为检索 SQL 连接的接口,如下所示:

    var mysql = require('mysql');
    var connectionpool = mysql.createPool({
      host     : 'localhost',
      user     : 'user',
      password : 'pass',
      database : 'database'
    });

    exports.getConnection = function (callback) {
      connectionpool.getConnection(callback);
    };

然后在另一个文件中:

    var connections = require('./connections');

        connections.getConnection(function (err, c) { 
    // Use c as a connection 
     c.query("select * from table limit 10 ",function(err,rows){
    //this is important release part 
                c.release();
                if(!err) {
                    console.log(rows);
                }           
            });

});

【讨论】:

    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2011-06-18
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多