首页 > 解决方案 > nodejs mariadb连接没有断开

问题描述

嗨,我正在使用 nodejs 创建一个休息 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 中,如果您请求页面,执行后所有连接将自动关闭。但在这里我面临着一些新的东西。

请求完成后如何关闭连接?

标签: javascriptmysqlnode.jsmariadbnode-modules

解决方案


我忘记了这个问题。但我今天试图解决它。

解决了

我试图关闭连接,但我应该关闭连接池而不是这个

完整代码

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_conn.end();
                db.end();
                res.write(JSON.stringify(data));
                res.end();
            });
        });
    }).listen(8080,"localhost");

推荐阅读