【发布时间】:2021-08-22 03:56:54
【问题描述】:
您好,我正在使用 nodejs 创建一个 REST API
但我遇到了问题
先看代码
var http = require('http');
var url = require('url');
var mariadb = require('mariadb');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var db_conn = mariadb.createPool({
host:"localhost",
user:"root",
password:"",
database:"database",
connectionLimit:1
});
db_conn.getConnection().then(db=>{
db.query("select * from array_languages").then(data => {
db.end();
res.write(JSON.stringify(data));
res.end();
});
});
}).listen(8080,"localhost");
这段代码完美地返回了数据。
但是每次我发出请求时,尽管请求已经完成,连接仍然是打开的。
预期结果
通常情况下, 当我执行脚本时,执行后 MySql 连接关闭
我已尝试关闭连接
通过使用conn.end()
但连接仍然打开
我来自 PHP 背景
在 PHP 中,如果您请求一个页面,执行后所有连接将自动关闭。 但在这里我面临着新的挑战。
请求完成后如何关闭连接?
【问题讨论】:
-
您可能想要使用连接池,而不是为每个查询打开和关闭一个全新的连接。 github.com/mysqljs/mysql#pooling-connections
-
@Tomalak 谢谢,但我使用的是 mariadb ,而不是 MySQL
-
MariaDB 和 MySQL 是一回事。 (而且你没有说你使用的是哪个库,所以这是我最好的猜测 - 使用连接池的建议无论哪种方式都是有效的。)
-
@Tomalak 我试过 mysql 但它抛出“重新抛出非 Mysql 错误”
标签: javascript mysql node.js mariadb node-modules