我在mysql中使用node,我有一个路由:
const mysql = require("./mysql");
router.post("/register_user", (req, res) => {
mysql.register(req.body).then((result) => {
// stuff
});
});
mysql.js版本:
const mysql = require("mysql");
const connection = mysql.createConnection("mysql://...");
exports.register = (req) => {
const user = { name: req.name };
return new Promise((resolve, reject) => {
// make sure user doesn't exist already
connection.query('...', [user], (err, data) => {
...
if (isNewUser) {
connection.query('INSERT INTO USER...', user, (insertErr, rows) => {
...
resolve(rows);
connection.end();
}
}
});
});
}
当我在我的应用程序中注册第一个用户时,这个功能非常有效。但之后,如果我立即注销(在web应用程序上),然后注册一个新用户,我会收到一个错误消息:
Error: Cannot enqueue Query after invoking quit.
为什么不创建一个新的连接?
1条答案
按热度按时间jtjikinw1#
我假设您使用的是以下npm模块mysql如果是这样的话,那么您可以简单地使用mysql池连接吗?
这个模块没有逐个创建和管理连接,而是使用mysql.createpool(config)提供了内置的连接池。
所以与其打电话
connection.end();
你会打电话的connection.release();
而是将连接返回到打开的连接池。