如何在Node.js Oracle DB连接没有';不归

如何在Node.js Oracle DB连接没有';不归,node.js,oracle,npm,oracle11g,Node.js,Oracle,Npm,Oracle11g,我在nodejs中使用Npm或cale,我的编译器将连接orcaledb,它的挂起线程用于获取连接。我想强制超时,因为我的客户等待的时间不超过15秒。如何在我的代码中添加此项。我试着用谷歌搜索了8个多小时,但没有成功。有人帮我吗 async _getConnection (reqId = '') { const connection = await this.connectionPool.getConnection() .catch(error => this.

我在nodejs中使用Npm或cale,我的编译器将连接orcaledb,它的挂起线程用于获取连接。我想强制超时,因为我的客户等待的时间不超过15秒。如何在我的代码中添加此项。我试着用谷歌搜索了8个多小时,但没有成功。有人帮我吗

 async _getConnection (reqId = '') {   
    const connection = await this.connectionPool.getConnection()
      .catch(error => this.logger.error('API Error _getConnection Oracle DB Error : ', error))
      this.logger.info('API _getConnection Oracle Connection ', connection)
      connection.callTimeout = config.get('db.sqlTimeOut') * 1000

    return connection
  }
在这一行,编译器挂起,不返回,不捕获,不从orcale获取错误

const connection = await this.connectionPool.getConnection()
有一些。连接超时由Oracle的SQL*Net层处理,因此请查看所有SQL*Net选项,例如


例如,如果Node.js正在使用Oracle客户端库19c或更高版本,则可以使用以下语法:
“mydbmachine.example.com/orclpdb1?connect_timeout=15”
用于
连接字符串

,现在可以使用
callTimeout
属性作为一个整数,以毫秒为单位。 下面是一个例子:

import * as OracleDB from "oracledb";

export class OracleDBHandler {
  static async execute(query: string): Promise<OracleDB.Result<unknown>> {
    try {
      const connection = await OracleDB.getConnection({
        user: process.env.RDS_USERNAME,
        password: process.env.RDS_PASSWORD,
        connectionString: `${process.env.RDS_HOSTNAME}/${process.env.RDS_SID}`,
      });
      connection.callTimeout = 10 * 1000; // Reduced the timeout to 10 secs

      const rows = await connection.execute(query, [], {
        outFormat: OracleDB.OUT_FORMAT_OBJECT,
      });
      await connection.close();

      return rows;
    } catch (exception) {
      console.error("Got an error during OracleDb connection: ", exception);
    }
  }
import*作为OracleDB从“OracleDB”导入;
导出类OracleDBHandler{
静态异步执行(查询:字符串):承诺{
试一试{
const connection=await OracleDB.getConnection({
用户:process.env.RDS_用户名,
密码:process.env.RDS_密码,
connectionString:`${process.env.RDS\u HOSTNAME}/${process.env.RDS\u SID}`,
});
connection.callTimeout=10*1000;//将超时时间减少到10秒
const rows=wait connection.execute(查询,[]{
outFormat:OracleDB.OUT\u FORMAT\u对象,
});
等待连接。关闭();
返回行;
}捕获(例外){
错误(“在OracleDb连接期间出错:”,异常);
}
}