# X.NCO **Repository Path**: xiodra/X.NCO ## Basic Information - **Project Name**: X.NCO - **Description**: nodejs操作oracle数据库,使用node-oracle。有相关例子以及在window下开发环境的安装说明。框架使用TypeORM。 - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://git.oschina.net/xiodra/X.NCO.git - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-08-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # X.NCO nodejs操作oracle数据库,使用node-oracle。有相关例子以及在window下开发环境的安装说明。 [环境配置 on Window](/X.NCO/README.md) - [X.NCO](#xnco) - [1. oracledb API 说明](#1-oracledb-api-说明) - [2. oracledb examples](#2-oracledb-examples) - [3. orm 框架](#3-orm-框架) - [1)sequelize、sequelize-oracle](#1sequelizesequelize-oracle) - [2)TypeORM](#2typeorm) - [4. TypeORM的数据访问层封装](#4-typeorm的数据访问层封装) - [1)数据结构](#1数据结构) - [2) 数据获取器](#2-数据获取器) - [3)数据过滤器](#3数据过滤器) - [4)数据库](#4数据库) - [5)数据服务](#5数据服务) --- # 1. oracledb API 说明 [API 说明](https://github.com/oracle/node-oracledb/blob/master/doc/api.md) # 2. oracledb examples * 简单例子 * [增](/x.nco/examples/insert.ts) * [删](/x.nco/examples/delete.ts) * [查](/x.nco/examples/select.ts) * [改](/x.nco/examples/update.ts) * oracledb其他特性例子 * [Promise、回调和流](x.nco/examples/promises.ts) * [SQL 和 PL/SQL 执行](x.nco/examples/plsql.ts) * REF CURSOR * 大对象:CLOB 和 BLOB * Oracle Database 12.1 JSON 数据类型 * 将结果作为 JavaScript 对象或数列进行查询 * JavaScript 和 Oracle 类型之间智能对应,可以手动重写 * 使用 JavaScript 对象或数列的数据绑定 * 事务管理 * 带队列功能的内置连接池 * 数据库驻留连接池 (DRCP) * 外部身份验证 * 行预取 * 语句缓存 * 客户端结果缓存 * 端到端跟踪、中间层身份验证和审计 * Oracle 数据库高可用性特性 # 3. orm 框架 **Tip:数据库orm框架中,都需要安装数据库必须的驱动库,如:
mysql或者mysql2
oracledb等
** ### 1)sequelize、sequelize-oracle 对oracle支持差,数据表model定义复杂,使用麻烦。 ### 2)TypeORM TypeORM是一个采用TypeScript编写的用于Node.js的优秀ORM框架,支持使TypeScript或Javascript(ES5, ES6, ES7)开发。目标是保持支持最新的Javascript特性来帮助开发各种用到数据库的应用 - 不管是轻应用还是企业级的。 - (1) 安装 - TypeORM ``` npm install typeorm ``` - 依赖库 **reflect-metadata** ``` npm install reflect-metadata ``` - 安装数据库驱动(看使用添加) - MySQL 或 MariaDB `npm install mysql --save` - Postgres `npm install pg --save` - SQLite `npm install sqlite3 --save` - Microsoft SQL Server `npm install mssql --save` - Oracle (experimental) `npm install oracledb --save` - (2)连接MySQL测试 [例子](x.nco/examples/typeorm-mysql.ts) 例子中包括通过表进行增删查改,直接执行sql语句等; - (3)连接Oracle测试 [例子](x.nco/examples/typeorm-oracle.ts) - (4)API 说明 [Github](https://github.com/typeorm/typeorm) - (5)项目调试错误情况 - error TS2384: Overload signatures must all be ambient or non-ambient >>> Setting "include" or "exclude" overrides the default behavior for both. As a result, the default "exclude" for node_modules is ignored. Either remove the "include" entry, or add an "exclude": ["node_modules", "bower_components", "jspm_packages"]. >>> *** Tip:
  1) `ConnectionOptions.autoSchemaSync` 设置true时会在数据库同步创建表;
  2)TypeORM 依赖 reflect-metadata 必须先引用这个模块(官网提示全局引用);
*** # 4. TypeORM的数据访问层封装 ### 1)数据结构 - 数据集`dataSet` - 数据表`dataTable` - 列`dataColumn` - 字段`dataField` ### 2) 数据获取器 - 基础数据获取器`baseDataFetcher` - 数据服务获取器`dataServiceFetcher` ### 3)数据过滤器 - 基础数据过滤器`baseDataFilter` - SQL过滤器`sqlFilter` - AND过滤器`andLogicFilter` - OR过滤器`orLogicFilter` - 组合过滤器`compositeLogicFilter` ### 4)数据库 - 数据库命令`dataCommandInfo` - 数据库连接对象`dataConnectionInfo` ### 5)数据服务 - 基础服务`baseService` - 数据服务`dataService`