Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js mysql2-重用连接_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 节点js mysql2-重用连接

Javascript 节点js mysql2-重用连接,javascript,mysql,node.js,Javascript,Mysql,Node.js,对不起,我用的是翻译。我希望你能理解 我在使用mysql模块时感到好奇。首先看一下代码 db_promise.js 创建一个池 constmysql=require('mysql2'); 常量配置={ 主机:process.env.DB_主机, 用户:process.env.DB_用户, 密码:process.env.DB_PW, 数据库:process.env.DB_NAME, 连接限制:100, 上限:10000, 多重陈述:正确, waitForConnections:对, 日期字符串:“

对不起,我用的是翻译。我希望你能理解

我在使用mysql模块时感到好奇。首先看一下代码

db_promise.js

创建一个池

constmysql=require('mysql2');
常量配置={
主机:process.env.DB_主机,
用户:process.env.DB_用户,
密码:process.env.DB_PW,
数据库:process.env.DB_NAME,
连接限制:100,
上限:10000,
多重陈述:正确,
waitForConnections:对,
日期字符串:“日期”
}
const createPool=mysql.createPool(配置,(错误)=>{
控制台错误(err);
});
const pool=createPool.promise();
module.exports=池;
run.js

功能A
创建连接,使用后将其传递给
功能B
,然后继续使用

constpool=require('./db_promise.js');
常量A=async()=>{
让康涅狄格州;
试一试{
conn=wait pool.getConnection();
等待conn.query('do stuff1..);
等待B(康涅狄格州);
返回;
}捕获(e){
控制台错误(e);
}最后{
控制释放();
}
}
常数B=异步(连接)=>{
试一试{
等待conn.query('do stuff 2..);
返回;
}捕获(e){
投掷e;
}
}

为每个函数创建连接将是一种浪费。当一个连接是关联函数时,它只能被重用吗?

您不需要每次都获取和释放一个连接。这由
功能自动处理,当查询解析时,连接将自动释放。使用池连接的查询也支持Promise功能。更多细节:谢谢你的评论。你是说我可以只使用一个声明的池在多个函数中处理查询吗?当我使用事务处理时,我不需要获得新连接吗?是的。从模块文档中:
池不会预先创建所有连接,而是根据需要创建连接,直到达到连接限制。
默认的
connectionLimit
10
。如果您认为您将同时执行更多的操作,则应增加限制数量。只需创建池,然后根据需要运行查询。我使用的是
mysqljs
(不是
mysql2
),但它们实际上是相同的-一般来说,getConnection可以省略,但其他示例表明必须在事务中调用getConnection。我学到了一些新东西。谢谢你,我爱你。是的,这可能会让人困惑,尤其是在处理交易时。这就是为什么我更喜欢
mysqljs
而不是
mysql2
-it。最终,
mysql2
将被弃用,
mysqljs
将成为
节点
的主要解决方案。从
mysql2
readme:
mysql2团队正在与mysqljs/mysql团队合作,找出共享代码并将其转移到mysqljs组织下