TypeORM
TypeORM 是 node.js
现有社区最成熟的对象关系映射器(ORM
)。本文介绍如何在 Midway 中使用 TypeORM 。
提示
本模块是从 v3.4.0 开始为新版本,模块名有变化,历史写法部分兼容,如果查询历史文档,请参考 这里。
相关信息:
描述 | |
---|---|
可用于标准项目 | ✅ |
可用于 Serverless | ✅ |
可用于一体化 | ✅ |
包含独立主框架 | ❌ |
包含独立日志 | ❌ |
和老写法的区别
旧模块为 @midwayjs/orm
,新模块为 @midwayjs/typeorm
,区别如下:
- 1、包名不同
- 2、在
src/config.default
的部分配置调整- 2.1 配置文件中的 key 不同 (orm => typeorm)
- 2.2修改为数据源的形式
typeorm.dataSource
- 2.3 实体模型类或者实体模型类的路径,需要在数据源的
entities
字段中声明 - 2.4 Subscriber 需要在数据源的
subscribers
字段中声明
- 3、不再使用
EntityModel
装饰器,直接使用 typeorm 提供的能力
安装组件
安装 typeorm 组件,提供数据库 ORM 能力。
$ npm i @midwayjs/typeorm@3 typeorm --save
或者在 package.json
中增加如下依赖后,重新安装。
{
"dependencies": {
"@midwayjs/typeorm": "^3.0.0",
"typeorm": "~0.3.0",
// ...
},
"devDependencies": {
// ...
}
}
引入组件
在 src/configuration.ts
引入 orm 组件,示例如下。
// configuration.ts
import { Configuration } from '@midwayjs/core';
import * as orm from '@midwayjs/typeorm';
import { join } from 'path';
@Configuration({
imports: [
// ...
orm // 加载 typeorm 组件
],
importConfigs: [
join(__dirname, './config')
]
})
export class MainConfiguration {
}
安装数据库 Driver
常用数据库驱动如下,选择你对应连接的数据库类型安装:
# for MySQL or MariaDB,也可以使用 mysql2 替代
npm install mysql --save
npm install mysql2 --save
# for PostgreSQL or CockroachDB
npm install pg --save
# for SQLite
npm install sqlite3 --save
# for Microsoft SQL Server
npm install mssql --save
# for sql.js
npm install sql.js --save
# for Oracle
npm install oracledb --save
# for MongoDB(experimental)
npm install mongodb --save
信息
- Oracle driver 比较特殊,需要查看 文档
- 不建议使用 typeorm 链接 mongodb,请使用 mongoose 组件
简单的目录结构
我们以一个简单的项目举例,其他结构请自行参考。
MyProject
├── src // TS 根目录
│ ├── config
│ │ └── config.default.ts // 应用配置文件
│ ├── entity // 实体(数据库 Model) 目录
│ │ └── photo.entity.ts // 实体文件
│ │ └── photoMetadata.entity.ts
│ ├── configuration.ts // Midway 配置文件
│ └── service // 其他的服务目录
├── .gitignore
├── package.json
├── README.md
└── tsconfig.json
在这里,我们的数据库实体主要放在 entity
目录(非强制),这只是一个简单的约定。