Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Nodejs+mysql2/promise连接太多_Mysql_Node.js_Typescript_Mysql2_Node Mysql2 - Fatal编程技术网

Nodejs+mysql2/promise连接太多

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

我在一个使用nodejs+mysql2的项目中工作,有时由于连接太多而出现错误

我的连接:

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
        });
    }
}