我已声明mysql
,我在app.js
中的连接是这样的:
var mysql = require('mysql');
var connection = mysql.createConnection({
host: '192.168.1.75',
user: 'dev',
password: 'devaccount',
database: 'PugIt'
});
app.set('connection', connection);
在User.js
注册时,我有:
router.route('/register/steam/finish')
.get(function(req, res) {
res.render('user/register_steam');
})
.post(function(req, res) {
var connection = req.app.get('connection');
connection.connect();
// Look For Users
connection.query("SELECT * FROM Users", function(err, rows, fields) {
console.log('We Found Something!');
});
connection.end();
});
当页面首次加载并且我点击注册时,它工作正常,但是如果我第二次按下按钮我的服务器上出现500
错误。
但如果我在每个var connection
文件中手动声明route
,则不会发生这种情况。
为什么我不能将req.app.get
与MySQL一起使用,我曾经使用过这种方法,因为我曾经使用MongoDB
,这种方式非常好,我在app.js中有一个主配置我可以改变为如果需要,所有路由文件。不确定为什么我在第二个500
POST
错误
答案 0 :(得分:1)
我认为每个connection.connect()
请求上的connection.end()
和POST
都会导致问题。放下这两行,你应该好好去。这样,连接只建立一次,并且所有请求都可以重复使用相同的连接,而无需不断尝试将其拆除并重新启动。
如果您发现自己需要更高的数据库查询并发性,也可以create a pool of mysql connections。