欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

nodejs环境使用Typeorm连接查询Oracle

程序员文章站 2022-05-31 22:21:40
首先是typeorm的官方地址, 国内有人翻了中文版,不保证时效性 ·通过npm安装下列包: typeorm //typeorm连接数据库 @types/node //类型系统 typescript //ts基础 oracledb //oracle基础 ts-node //nodejs编译运行ts的 ......

首先是typeorm的,

国内有人翻了,不保证时效性

·通过npm安装下列包:

  • typeorm //typeorm连接数据库
  • @types/node //类型系统
  • typescript //ts基础
  • oracledb //oracle基础
  • ts-node //nodejs编译运行ts的工具;

·根路径配置:

  • package.json //项目依赖、脚本、描述等
  • tsconfig.json //ts编译设置
 1 {
 2     "compileroptions": {
 3         "module": "commonjs",
 4         "noimplicitany": true,
 5         "removecomments": true,
 6         "preserveconstenums": true,
 7         "sourcemap": true,
 8         "outdir": "./dist",
 9         "emitdecoratormetadata": true,  //typeorm特需
10         "experimentaldecorators": true  //typeorm特需
11     },
12     "include": [
13         "src/**/*"
14     ],
15     "exclude": [
16         "node_modules",
17         "**/*.spec.ts"
18     ]
19 }

 

  • 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在debug时由ts编译所得的js路径,此项与项目勿关,只为了方便调试
 1 {
 2     "name": "current ts file",
 3     "type": "node",
 4     "request": "launch",
 5     "program": "${workspaceroot}\\node_modules\\ts-node\\dist\\bin.js",
 6     "args": [
 7         "${relativefile}"
 8     ],
 9     "cwd": "${workspaceroot}",
10     "protocol": "inspector"
11 }

 

·编写主体:

根路径下创建/编辑index.ts(名字可自定义),配置package中start脚本命令为ts-node index.ts,
 1 import "reflect-metadata";
 2 import {createconnection} from "typeorm";
 3 import {xxx} from "./src/entity/xxx";  //引入数据表结构映射文件
 4 
 5 createconnection().then(async connection => {  //连接参数为空时自动按照路径下ormconfig.json信息连接
 6     /*let a = await connection.query(
 7         `select * from xxx`
 8     ); *///直接使用原生sql语句查询
 9  
10     let a = await connection.manager.find(xxx)  //使用连接器查询 connection.manager
11     console.log("result: ", a);
12 }).catch(error => console.log(error));

 在src/entity/下构建数据表实体结构xxx.js,格式参考官网

 在cmd根路径运行npm start,或使用vscode调试

 至此,我们已经成功使用typeorm连接到了oracle数据库,若要构成完整的后端只需添加中间件等等

·与sequelize的差异

从sequelize转移到typeorm,是因为sequelize官方不支持连接oracle

typeorm像名字中描述的那样,是个使用typescript编写的、类型系统非常完整的数据库关系映射,放张数据类型截图:

nodejs环境使用Typeorm连接查询Oracle

 

 这还是js吗?当然,如此完整的类型系统得益于typescript,我们也可以在构建时酌情使用类型声明,因为它不是必须的(本质仍是js)

 很多类型都可以使用js原生类型+长度代替,是否使用专用类型声明取决于实际需求

 

 根据数据库自动生成/更新映射文件脚本会相对复杂

 

 typescript也是初次接触,文章只是通过短短几星期的摸索得来,内容难免有误,若有错误还请点拨,谢谢