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

aurhwmvo  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(127)

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

  • cwallet.sso
  • cwallet.sso.lck
  • ewallet.p12
  • ewallet.p12.lck
  • sqlnet.ora
  • tnsnames.ora
  • company-certificate.crt

我尝试从SQLDeveloper客户端使用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;

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

neekobn8

neekobn81#

sequelize的oracle方言不支持ssl作为dialectOptions。您可以在dialectOptions中使用connectString选项。
$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安全部分来配置你的别名根据你的需要。

相关问题