访问MySQL Pool ojbect的PoolConfig的数据库成员

时间:2019-05-24 07:39:04

标签: mysql node.js

我想从一个池对象中获取一个数据库,并为其分配一个不同的数据库名称。

我一直在使用此功能来获取池。但是此函数每次都会返回一个具有不同配置的新池。


getCsvReport(jobId): Observable<Object> {
    const header = { Accept: "application/octet-stream" };
    let endpoint: string = `${Endpoints.REPORT}jobs/${jobId}/filePath?`;
    return this.get(endpoint, header).pipe(
      map(report => {
      const a = document.createElement('a');
      document.body.appendChild(a);
      const blob: any = new Blob([report.data.parentXml], { type: 'octet/stream' });
      const url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = data.fileName;
      a.click();
      window.URL.revokeObjectURL(url);
      })
    );
  }

我想要这样的东西。以便它返回具有不同配置的相同池。

function getPool(database_name){
    if(database_name)
        config.database = database_name;
    var pool = require('mysql').createPool(config);
    console.log(pool);
    return pool;
}

在打印出池对象并尝试访问该对象的数据库参数以对其进行修改时。但没有成功。如何访问此对象的数据库元素? 这是对象

var pool = require('mysql').createPool(config);

function getPool(database_name){
    if(database_name)
        pool.config.PoolConfig.database = database_name;
    console.log(pool);
    return pool;
}

1 个答案:

答案 0 :(得分:0)

使用以下代码创建文件pool.js。

const mysql = require("mysql");
var dbConfigMySql = {
 host: "127.0.0.1",
 user: "user",
 password: "password",
 port: "3306",
 connectionLimit: 15,
 queueLimit: 30,
 acquireTimeout: 1000000
}

const pool = mysql.createPool(dbconifg);

function getPool(database_name){
    pool.config.connectionConfig.multipleStatements = false;
    if(database_name){
        pool.config.connectionConfig.database = database_name;
        return pool;
    }
    else{
        delete pool.config.connectionConfig.database;
        return pool;
    }
}
exports.pool = getPool;

现在您可以将该文件导入任何地方,并使用具有不同数据库名称的相同池

const pool = require("../pool").pool;
pool("yourdatabase").getconnection((error,connection()=>{
    connection.query(....)
})