【发布时间】:2021-04-25 01:18:43
【问题描述】:
我在一个使用 nodejs + mysql2 的项目中工作,有时我收到错误 Too many connections。
我的连接:
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;
}
控制器:
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
});
}
}
所以,我的问题是我必须使用 createConnection 而不是 createPool 或者我只需要创建一个我的 conn 实例。
【问题讨论】:
-
你应用调用
connect()多少次?它应该只调用一次(看起来你正在为每个请求调用它),并从池中选择一个连接。 -
我为每个请求调用 connect(),所以我只需要为每个控制器调用一次 connect(),还是为每个控制器调用一次?。请给我一些例子。
标签: mysql node.js typescript mysql2 node-mysql2