# 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`