Итак, я пытаюсь добавить поддержку Oracle DB в моем приложении Node. Я использую node-oracledb для этого.
Поскольку я уже использую MSSQL в своем приложении, я хочу реализовать «похожий» рабочий процесс для использования Oracle.
Сейчас я использую класс, который реализует методы с использованием обещаний, например:
class db {
constructor(){
this._pool = null;
}
get_pool(){
//for MSSQL
if (!this._pool) {
this._pool = new mssql.ConnectionPool(sqlDbOptions);
}
//connect pool
if (!this._pool.connected){
return this._pool.connect();
}
else{
return new Promise((resolve, reject) => {
resolve(this._pool);
})
}
}
insert(sql){
return this.get_pool().then((pool) => {...
....
....
}
}
Как вы можете видеть, вызов метода вставки возвращает обещание вставки после получения пула от get_pool () (которая проверяет, подключен ли пул, и подключает его, если это не так).
Я пытался использовать ту же логику для оракула, из того, что я читаю в их документах для обещаний, используя что-то вроде этого в get_pool ():
if (!this._pool){
this._pool = new oracle.createPool(oracleDbOptions);
}
if (this._pool.connectionsOpen == 0){
return this._pool.getConnection();
}
else{
return new Promise((resolve, reject) => {
resolve(this._pool);
})
}
Это не работает, так как по какой-то причине oracle.createPool (options) также возвращает обещание, которое, как я заметил, требует много времени для решения (не знаю почему, поскольку оно не подключается).
Есть идеи, как добиться того же поведения, которое я использовал для MSSQL здесь?
Спасибо!