如何将数据库连接(Oracle)与NODEJS(ORM)连接?

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

我想连接我的Oracle云数据库,它被称为独立数据库,并且已经设法与NODEJS(oracle documentation)建立连接,但我仍然无法使用ORM实现,并且我在使用www.example.com时遇到了问题Typeorm.io,它说它与Oracle兼容,但我不知道如何做到这一点。我希望你能帮助我:

They are connection data = {censorship}

这是我的文件db.ts尝试使用Typeorm.io

import {
  createConnection
} from "typeorm";

createConnection({
  type: "oracle",
  username: "admin",
  password: "{censorship}",
  database: "DB{censorship}_high",
  synchronize: true,
  logging: false
}).then(connection => {
  console.log('connect database')
}).catch(error => console.log(error));

这是我的连接文件,对我来说正确工作db.js

const oracledb = require('oracledb');
let dbConfig = require('./dbconfig');

oracledb.initOracleClient({
  libDir: 'D:\\MaterialSkywork\\Oracle\\instantclient_21_3'
});

console.log(dbConfig)

async function Open(sql, binds, autoCommit) {
  let cnn = await oracledb.getConnection(dbConfig);
  let result = await cnn.execute(sql, binds, {
    autoCommit
  });
  cnn.release();
  return result;
}

exports.Open = Open;

这是我对autonome数据库index.js的测试

const BD = require('./db.js');

async function start() {

  sql = "select * from elopez.orders";

  let result = await BD.Open(sql, [], false);
  Orders = [];

  result.rows.map(order => {
    let userSchema = {
      "order": order[0],
      "order_status": order[3],
    }

    Orders.push(userSchema);
  })

  console.log(Orders);
}

start()

或者,如果你不能,我怎么能把我的db.js文件迁移到db.ts,我试过了,但是我有很多问题,通过Typescript和开放给你的意见,以改善我的代码,并使用良好的做法,以避免任何漏洞,谢谢。

lsmd5eda

lsmd5eda1#

要首先将db.js迁移到db.ts,您需要确保安装了OracleDB TypeScript声明:

npm install @types/oracledb --save-dev

现在,让我们将db.js文件迁移到db.ts:

import oracledb, { Connection } from 'oracledb';

const dbConfig: oracledb.ConnectionAttributes = {
  user: 'admin',
  password: '{censorship}',
  connectString: 'DB{censorship}_high',
};

async function Open(sql: string, binds: any[], autoCommit: boolean): Promise<oracledb.Result<any>> {
  let connection: Connection;
  try {
    connection = await oracledb.getConnection(dbConfig);
    const result = await connection.execute(sql, binds, { autoCommit });
    return result;
  } finally {
    if (connection) {
      connection.close();
    }
  }
}

export { Open };

改进和良好做法:
1.使用promises/await和Promises:使用Promises/await和Promises是处理数据库连接和查询等异步操作的良好实践。
1.正确处理连接释放:我添加了一个finally块来确保数据库连接被正确释放,即使在异常的情况下也是如此。
1.类型注解:TypeScript的静态类型有助于在开发过程中捕获潜在的错误。我在必要的地方添加了类型注解。
1.采购b:从模块中导入oracledb和Connection以获取类型信息,以便更好地进行类型检查。
1.配置连接:连接配置对象(dbConfig)现在已使用正确的类型定义。
1.使用ES6导出:我已经切换到使用ES6导出而不是module. exports。这与现代JavaScript实践和TypeScript保持一致。
1.文件格式约定:通常,TypeScript文件以.ts扩展名命名。

相关问题