gpt4 book ai didi

javascript - 关于connection.end()在node.js mySQL模块中如何工作的困惑

转载 作者:行者123 更新时间:2023-11-29 10:10:34 25 4
gpt4 key购买 nike

const mysql = require('mysql'); 
let connection = mysql.createConnection(...);
connection.connect((err)=>{
...
connection.query((err)=>{
...
connection.end();});
});

当我使用关闭连接后

connection.end()

,如果我想使用相同的凭据再次查询数据库,是否需要通过调用建立新连接

mysql.createConnection(...)

或者我可以通过简单地调用来重用相同的连接

connection.connect(...)

一点背景知识:我正在将 angular/node.js 应用程序部署到共享托管网站,并且 Web 主机与 mySQL 数据库的并发连接最大限制为 25 个,因此我需要确保关闭连接在用户执行查询后正确地执行。我不确定在关闭该连接后是否可以重用 mysql.createConnection(...) 创建的连接,或者我是否需要创建一个全新的连接。

最佳答案

您可以使用一个全局连接从数据库获取数据。

如果您处理单个文件,则可以编写为

app.js 只有一个文件

 var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function (error, results, fields) {
if (error) throw error;
// connected!
});

如果您想在多个文件中使用相同的连接,则可以编写为
app.js

 app.use(  
connection(mysql, {
host: xxxxx,
user: 'root',
password : xxxx,
port : 3306,
database:dbname

},'pool'),
);

var oem = require('./routes/type');
app.get('/api/oemtype',oem.type);

对于第二个文件type.js

   exports.type = function(req, res){

req.getConnection(function(err,connection){

var query = connection.query('SELECT * FROM type',function(err,rows)
{
if(err)
res.json({
status:0
});

res.send(rows);
res.render('customers',{page_title:"Customers - Node.js",data:rows});


});

});

};

无需使用connection.end()。

关于javascript - 关于connection.end()在node.js mySQL模块中如何工作的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com