nodejs环境使用Typeorm连接查询Oracle数据


Posted in NodeJs onDecember 05, 2019

首先是typeorm的官方地址,

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

·通过npm安装下列包:

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

·根路径配置:

  • package.json //项目依赖、脚本、描述等
  • tsconfig.json //ts编译设置
{
 "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在debug时由ts编译所得的js路径,此项与项目勿关,只为了方便调试

{
 "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中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.js,格式参考官网

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

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

·与sequelize的差异

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

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

nodejs环境使用Typeorm连接查询Oracle数据

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

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

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

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

总结

以上所述是小编给大家介绍的nodejs环境使用Typeorm连接查询Oracle数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 #NodeJs
NodeJS实现一个聊天室功能
Nov 25 #NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 #NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 #NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 #NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 #NodeJs
nodejs实现UDP组播示例方法
Nov 04 #NodeJs
You might like
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
基于Python实现天天酷跑功能
2021/01/06 Python
EntityManager都有哪些方法
2013/11/01 面试题
小学教师师德承诺书
2014/05/23 职场文书
2014年安全生产责任书
2014/07/22 职场文书
租房协议书
2014/09/12 职场文书
政风行风评议整改方案
2014/09/15 职场文书
公司聚餐通知
2015/04/22 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
Go 内联优化让程序员爱不释手
2022/06/21 Golang