跳到主要内容

使用 CLI

安装 CLI

如果实体文件是 JavaScript

如果你有本地的 typeorm 版本,确保它与我们将要安装的全局版本匹配。

你可以通过 npm i -g typeorm 全局安装 typeorm。 如果你不想安装它,也可以选择每次用命令时使用 npx typeorm <参数>

如果实体文件是 TypeScript

此 CLI 工具是用 JavaScript 编写的,并在 node 上运行。如果你的实体文件是 TypeScript,你需要在使用 CLI 前将它们转译为 JavaScript。如果你只使用 JavaScript,可以跳过此部分。

你可以在项目中设置 ts-node 以简化操作,如下:

安装 ts-node:

npm install ts-node --save-dev

在 package.json 的 scripts 部分添加 typeorm 命令:

"scripts": {
...
"typeorm": "typeorm-ts-node-commonjs"
}

对于 ESM 项目,改为添加:

"scripts": {
...
"typeorm": "typeorm-ts-node-esm"
}

如果你想加载更多模块,比如 module-alias,可以添加更多 --require my-module-supporting-register

然后你可以这样运行命令:

npm run typeorm migration:run -- -d path-to-datasource-config

如何阅读文档?

为了减少文档的冗长,以下章节使用全局安装的 typeorm CLI。根据你安装 CLI 的方式,你可以将命令开头的 typeorm 替换为 npx typeormnpm run typeorm

初始化一个新的 TypeORM 项目

你可以创建一个预先配置好的新项目:

typeorm init

它会创建一个包含 TypeORM 基础所需的全部文件:

  • .gitignore
  • package.json
  • README.md
  • tsconfig.json
  • src/entity/User.ts
  • src/index.ts

然后你可以运行 npm install 安装所有依赖。 接着通过运行 npm start 启动你的应用程序。

所有文件均生成在当前目录。 如果你想在特定目录生成,可以使用 --name

typeorm init --name my-project

如果你想指定特定数据库,可以使用 --database

typeorm init --database mssql

生成基于 ESM 的项目可以使用 --module esm

typeorm init --name my-project --module esm

你也可以生成带有 Express 的基础项目:

typeorm init --name my-project --express

如果你使用 docker,可以生成 docker-compose.yml 文件:

typeorm init --docker

typeorm init 是设置 TypeORM 项目最简单快捷的方式。

创建新实体

你可以使用 CLI 创建新实体:

typeorm entity:create path-to-entity-dir/entity

更多关于 实体 的内容。

创建新的订阅者

你可以使用 CLI 新建订阅者:

typeorm subscriber:create path-to-subscriber-dir/subscriber

更多关于 订阅者 的内容。

管理迁移

  • typeorm migration:create - 创建 空迁移
  • typeorm migration:generate - 生成 迁移,比较实体与当前数据库结构
  • typeorm migration:run - 执行 所有迁移
  • typeorm migration:revert - 回滚 上一次迁移
  • typeorm migration:show - 列出 所有迁移及其执行状态

更多关于 迁移 的内容。

同步数据库模式

同步数据库架构使用:

typeorm schema:sync

在生产环境运行此命令时需谨慎—— 如果不谨慎使用,schema sync 可能导致数据丢失。 务必先检查要运行哪些 SQL 查询,再在生产环境执行。

记录同步数据库模式的查询但不实际执行

查看 schema:sync 将执行哪些 SQL 查询使用:

typeorm schema:log

删除数据库模式

完全删除数据库架构使用:

typeorm schema:drop -- -d path-to-datasource-config

在生产环境使用此命令需十分小心,因为它会彻底删除数据库中的数据。

执行任意 SQL 查询

你可以直接在数据库中执行任何 SQL 查询:

typeorm query "SELECT * FROM USERS"

清除缓存

如果你使用了 QueryBuilder 缓存,有时需要清空缓存中的所有内容。 你可以使用以下命令完成:

typeorm cache:clear

查看版本

你可以通过运行以下命令查看已安装的 typeorm 版本(包括本地和全局):

typeorm version