我对来自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连接
非常感谢任何帮助/暗示理解这一点。提前谢谢。
答案 0 :(得分:2)
有几种方法可以做到这一点。几个解决方案可能是:
创建一个创建和导出连接的resources.js文件。然后在您需要的每个源文件中输入require()resources.js。
将连接传递给用户路由文件。这样的事情:
// 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();