我开始研究typeorm,如果我向已经存在数据的现有实体中添加新列,我会感到困惑。我使用SQlite。
我在文档的“迁移”部分中看到,如果要添加新列,似乎必须执行一个过程。
但是当我看到this issue in typeorm's github时,我了解到,只要将新的“ @Column”注释属性添加到Entity类就足够了,当应用启动时typeorm会自动创建该列。
我真的希望typeorm能够自动处理模式更改。
有人可以帮忙吗?
答案 0 :(得分:1)
TypeOrm能够更改架构,但是不会在服务器启动时自动运行迁移(这不是所需的行为)。如果要在应用启动时执行迁移,则需要执行以下步骤:
更改实体(如添加新列)后,您需要生成一个迁移文件:
typeorm migration:generate -c 'connectionName'
然后将该迁移文件创建到您的ormconfig.json中配置的文件夹中。
在启动服务器之前,需要创建数据库连接并运行迁移。所以您的主文件应该看起来像
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'