使用云钱包将 Sequelize 连接到 Oracle DB

问题描述 投票:0回答:1

我需要使用云钱包将我的 Node.js + Sequelize 应用程序连接到安全数据库 目前我有一个 .zip 文件,其中包含:

  • cwallet.sso
  • cwallet.sso.lck
  • 电子钱包.p12
  • 电子钱包.p12.lck
  • sqlnet.ora
  • tnsnames.ora
  • 公司证书.crt

我尝试从 SQLDevelopper 客户端使用 zip 文件进行连接,它有效,但现在我需要从 NodeJS + Sequelize 进行连接

这就是我尝试做的事情

const fs = require('fs');
const Sequelize = require('sequelize');
const _sequelize = new Sequelize(config.database.servicename, config.database.username, config.database.password, {
    host: config.database.address,
    port: config.database.port,
    dialect: config.database.dialect,
    logging: false,
    dialectOptions: {
        ssl: {
            ca: fs.readFileSync(__dirname + '/../../company-certificate.crt')
        }
    }
});

_sequelize.authenticate().then(() => {
    console.log('Connection to DB : [OK]');
}).catch((error) => {
    console.error('Connection to DB : [KO]');
});

module.exports = _sequelize;

这是连接器返回的错误: “原文:错误:NJS-500:与 Oracle 数据库的连接已断开”

node.js oracle sequelize.js
1个回答
0
投票

sequelize 的 oracle 方言不支持

ssl
dialectOptions
。 您可以在
connectString
中使用
dialectOptions
选项。
$TNS_ADMIN
环境变量设置为您的钱包位置。

const _sequelize = new Sequelize({
  dialect: config.database.dialect,
  username: config.database.username,
  password: config.database.password,
  dialectOptions: {
    connectString: <alias_from_tnsnames.ora>
  }
});

检查tnsnames.ora安全部分根据您的需要配置您的别名。

© www.soinside.com 2019 - 2024. All rights reserved.