【问题标题】:export var to routes files expressjs将 var 导出到路由文件 expressjs
【发布时间】:2014-04-16 01:59:12
【问题描述】:

我对来自 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: connection is not defined

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

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

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

【问题讨论】:

标签: node.js express


【解决方案1】:

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

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

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

// 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);
    });
  });
};

【讨论】:

    【解决方案2】:

    创建一个数据库连接器 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();
    

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 2016-08-08
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      相关资源
      最近更新 更多