本文介绍如何在 Node.js 环境中使用 TypeORM 和 TypeScript 连接 Oracle 数据库。内容涵盖必要的 npm 包安装、tsconfig.json 与 ormconfig.json 的配置、VSCode 调试设置,以及通过 Entity 和 createConnection 进行数据查询的完整流程,并对比了其与 Sequelize 的差异。
环境准备与依赖安装
首先访问 TypeORM 的官方文档地址。
国内有用户翻译了中文版,但无法保证内容的时效性。
通过 npm 安装以下依赖包:
- typeorm,用于连接数据库。
- @types/node,提供类型系统支持。
- typescript,作为基础编译语言。
- oracledb,Oracle 数据库的基础驱动。
- ts-node,用于在 Node.js 中编译并运行 TypeScript 代码。
项目配置文件详解
在项目根路径下配置相关文件:
- package.json,用于管理项目依赖、脚本命令及描述信息。
- tsconfig.json,配置 TypeScript 的编译选项。
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"outDir": "./dist",
"emitDecoratorMetadata": true, //typeorm特需
"experimentalDecorators": true //typeorm特需
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
ormconfig.json,存储数据库连接的参数配置。
{
"type": "oracle",
"host": "10.16.2.41",
"port": 1521,
"username": "admin",
"password": "admin",
"sid": "ORCL",
"synchronize": true,
"logging": true,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
]
}
在 .vscode 目录下配置 launch.json,主要设定 VSCode 调试时 TypeScript 编译生成的 JavaScript 文件路径。此配置仅为了方便本地调试,与项目实际运行无关。
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}\\node_modules\\ts-node\\dist\\bin.js",
"args": [
"${relativeFile}"
],
"cwd": "${workspaceRoot}",
"protocol": "inspector"
}
核心代码实现与运行
编写核心业务代码:
在项目根路径下创建或编辑 index.ts 文件(文件名可自定义),并在 package.json 的 start 脚本中配置命令为 ts-node index.ts。
import "reflect-metadata";
import {createConnection} from "typeorm";
import {xxx} from "./src/entity/xxx"; //引入数据表结构映射文件
createConnection().then(async connection => { //连接参数为空时自动按照路径下ormconfig.json信息连接
/*let a = await connection.query(
`SELECT * FROM xxx`
); *///直接使用原生sql语句查询
let a = await connection.manager.find(xxx) //使用连接器查询 connection.manager
console.log("result: ", a);
}).catch(error => console.log(error));
在 src/entity/ 目录下构建数据表的实体结构文件(如 xxx.ts,原文误写为 .js,建议修正为 .ts 以符合 TS 规范),格式参考官方文档示例。
在命令行根路径执行 npm start,或者使用 VSCode 进行调试运行。
至此,已成功使用 TypeORM 连接 Oracle 数据库。若需构建完整的后端服务,还需添加中间件等其他组件。
TypeORM 与 Sequelize 对比及类型系统
与 Sequelize 的差异:
从 Sequelize 迁移至 TypeORM 的原因在于,Sequelize 官方不支持连接 Oracle 数据库。
正如名称所示,TypeORM 是一个使用 TypeScript 编写的、拥有完整类型系统的数据库关系映射工具。参考下图展示的数据类型:

这依然是 JavaScript 吗?是的。如此完整的类型系统得益于 TypeScript,我们在构建时可以根据需要酌情使用类型声明,因为类型声明并非强制要求(其本质仍是 JavaScript)。
许多类型可以使用 JavaScript 原生类型加上长度限制来替代,是否使用专用类型声明取决于实际业务需求。
根据数据库自动生成或更新映射文件的脚本相对复杂。
由于作者初次接触 TypeScript,本文内容仅基于短短几周的摸索总结,难免存在疏漏。如有错误,欢迎指正,谢谢。
总结
以上介绍了在 Node.js 环境下使用 TypeORM 连接并查询 Oracle 数据的方法,希望对大家有所帮助。如有任何疑问,请留言,小编会及时回复。感谢大家对本站的支持! 如果您觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!