Nodejs+mysql2/promise连接太多
我在一个使用nodejs+mysql2的项目中工作,有时由于连接太多而出现错误 我的连接:Nodejs+mysql2/promise连接太多,mysql,node.js,typescript,mysql2,node-mysql2,Mysql,Node.js,Typescript,Mysql2,Node Mysql2,我在一个使用nodejs+mysql2的项目中工作,有时由于连接太多而出现错误 我的连接: import {createPool, Pool} from 'mysql2/promise'; export async function connect(): Promise < any > { const connection: Pool = await createPool({ host: 'localhost', port: 3306, user: 'r
import {createPool, Pool} from 'mysql2/promise';
export async function connect(): Promise < any > {
const connection: Pool = await createPool({
host: 'localhost',
port: 3306,
user: 'root',
password: '',
database: 'mendozarq',
connectionLimit: 10
});
return connection;
}
所以,我的问题是我必须使用createConnection而不是createPool,或者我只需要创建一个我的conn实例。您应该只调用createPool一次,然后每次从池中选择 所以,它应该是这样的。创建一个存储池的常量。然后在函数中,如果池已经存在,则返回池而不调用createPool。如果它不存在,则调用createPool并返回已创建的池 从“mysql2/promise”导入{createPool,Pool}; const globalPool:Pool |未定义=未定义; 导出异步函数connect:Promise{ //如果已创建池,请返回它,而不是创建新池。 ifglobalPool{ 返回globalPool; } //如果我们已经走到了这一步,那么这个池就不存在了,所以让我们创建一个。 globalPool=等待创建池{ 主机:“localhost”, 港口:3306, 用户:'根', 密码:, 数据库:“mendozarq”, 连接限制:10 }; 返回globalPool; }
你的应用程序呼叫connect有多少次?它应该只调用一次它看起来像是您在为每个请求调用它,并且正在从池中选择连接。我正在为每个请求调用connect,所以我只需要为每个控制器调用connect一次,或者为每个控制器调用connect一次?。请给我举个例子。谢谢你的解释!
import { Response, Request } from 'express';
import { FieldPacket, Pool } from 'mysql2/promise';
import { connect } from './../../classes/database';
import { Personal } from './../../models/personal.interface';
export const getAllPersonal = async (req: Request, res: Response) => {
try {
const conn: Pool = await connect();
const [personal]: [any[], FieldPacket[]] = await conn.query('SELECT * FROM personal ORDER BY creadoEn DESC');
conn.end();
return res.status(200).json(personal);
} catch (error) {
return res.status(400).json({
error
});
}
}