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