соединение nodejs mariadb не отключается

#javascript #mysql #node.js #mariadb #node-modules

Вопрос:

привет, я использую nodejs для создания API rest

но я столкнулся с проблемой

сначала посмотрите код

 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, если вы запросите страницу, после выполнения все соединения автоматически закроются. но здесь я сталкиваюсь с чем-то новым.

Как я Могу закрыть соединение после завершения запроса ?

Комментарии:

1. Возможно, вам захочется использовать пул соединений вместо того, чтобы открывать и закрывать совершенно новое соединение для каждого отдельного запроса. github.com/mysqljs/mysql#pooling-connections

2. @Tomalak спасибо , но я использую mariadb , а не MySQL

3. MariaDB и MySQL-это одно и то же. (и вы все равно не сказали, какую библиотеку вы используете, так что это было мое лучшее предположение — предложение использовать пул соединений справедливо в любом случае.)

4. @Tomalak Я пробовал mysql, но он выдает «Переосмысление ошибок, не относящихся к Mysql».

Ответ №1:

Я забываю об этом вопросе. Но я пытался решить ее сегодня.

Решенный

Я пытался закрыть соединение, но вместо этого я должен был закрыть пул соединений

Полный Код

 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");