如何使用 typeorm 向现有实体添加新列

Bru*_*ica 3 sqlite typeorm

我开始研究 typeorm 并且我对如果将新列添加到已经保存有数据的现有实体会发生什么感到困惑。我使用 SQLite。

我在文档的“迁移”部分看到,如果我想添加一个新列,似乎必须完成一个过程。

但是当我在 typeorm 的 github 中看到这个问题时,我明白如果我只是将新的“@Column”注释属性添加到 Entity 类就足够了,并且 typeorm 会在应用程序启动时自动创建列。

我真的希望 typeorm 能够自动处理该架构更改。

有人可以帮忙吗?

Jud*_*dge 5

TypeOrm 能够更改架构,但不会在服务器启动时自动运行迁移(这不是想要的行为)。如果您希望在应用程序启动时执行迁移,您需要执行以下步骤:

  1. 创建迁移文件:

更改实体后(如添加新列),您需要生成迁移文件:

typeorm migration:generate -c 'connectionName'
Run Code Online (Sandbox Code Playgroud)

然后将该迁移文件创建到您的 ormconfig.json 中配置的文件夹中。

  1. 运行迁移

在启动服务器之前,您需要创建数据库连接并运行迁移。所以你的主文件应该看起来像

import { Connection, getConnectionManager } from 'typeorm';

const connectionManager = getConnectionManager();
const connection = connectionManager.get(connectionName);
await connection.runMigrations();

// start your server
startServer();
Run Code Online (Sandbox Code Playgroud)

出于开发目的,您还可以使用模式同步,在这种情况下,typeorm 会将您的数据库与您的实体同步:

npx typeorm schema:sync -c 'connectionName'
Run Code Online (Sandbox Code Playgroud)