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

时间:2019-08-30 22:26:15

标签: sqlite typeorm

我开始研究typeorm,如果我向已经存在数据的现有实体中添加新列,我会感到困惑。我使用SQlite。

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

但是当我看到this issue in typeorm's github时,我了解到,只要将新的“ @Column”注释属性添加到Entity类就足够了,当应用启动时typeorm会自动创建该列。

我真的希望typeorm能够自动处理模式更改。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 创建迁移文件:

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

typeorm migration:generate -c 'connectionName'

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

  1. 运行迁移

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

import { Connection, getConnectionManager } from 'typeorm';

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

// start your server
startServer();

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

npx typeorm schema:sync -c 'connectionName'