export var to routes files expressjs

时间:2014-04-16 01:59:13

标签: node.js express

我对来自php的nodejs + expressjs完全不熟悉,我在如何导出/包含var到我的routes / users.js文件时遇到了麻烦。

app.js上的

我有:

//database connection
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'dbNodeExpress'
});

......一些代码

var user = require('./routes/user'); //这里我包含了我的路线/文件(我不知道这里是否包含路线是正确的 - 出于学习目的,它现在适用)

...更多代码,直到启动服务器

在我的/routes/user.js

app = require('../app');
 //var mysql = require('mysql');
 var baseUrl = app.get('baseUrl');

app.get('/users_mysql', function(req, res){
  connection.query('SELECT * FROM users', function(err, users){
    res.json(users);
  });
});

我得到了明确错误:500 ReferenceError:未定义连接

连接有效,因为如果我将内容从users.js移动到app.js,我可以查询数据库。

我的问题是如何注入要在routes / users.js上使用的var连接

非常感谢任何帮助/暗示理解这一点。提前谢谢。

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。几个解决方案可能是:

  1. 创建一个创建和导出连接的resources.js文件。然后在您需要的每个源文件中输入require()resources.js。

  2. 将连接传递给用户路由文件。这样的事情:

  3. // app.js
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'dbNodeExpress'
    });
    require('./routes/user')(connection);
    
    
    // routes/user.js
    module.exports = function(connection) {
      app.get('/users_mysql', function(req, res){
        connection.query('SELECT * FROM users', function(err, users){
          res.json(users);
        });
      });
    };
    

答案 1 :(得分:1)

创建数据库连接器javascript文件。就像database_connector.js一样 并且当您想要连接池或连接类可用于您的模型时需要它。 提示:您还可以导出如下所示的配置文件或仅使用值。

var mysql = require('mysql');

var config = require("./config");

function Connection() {
    this.pool = null;

    this.init = function() {
        this.pool = mysql.createPool({
            connectionLimit: config.poolSize,
            host: config.host,
            user: config.user,
            password: config.password,
            database: config.database,
            debug:config.debug,
        });
    };

    this.acquire = function(callback) {
        this.pool.getConnection(function(err, connection) {
            callback(err, connection);
        });
    };
    console.log("connection"+this.pool);
}

module.exports = new Connection();