我正在使用带有mysql的节点,并且有一条路由可以做到:
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.
为什么不创建新连接?
答案 0 :(得分:0)
我假设您正在使用以下NPM模块mysql 如果是这种情况,那么您可以简单地使用MySQL pooling connections吗?
该模块不是一个接一个地创建和管理连接,而是使用mysql.createPool(config)提供内置的连接池。
因此,您将调用connection.end();
而不是调用connection.release();
,而是将连接返回到打开的连接池中。