代码之家  ›  专栏  ›  技术社区  ›  Bruno Negrão Zica

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

  •  0
  • Bruno Negrão Zica  · 技术社区  · 6 年前

    我开始研究typeorm,我很困惑如果我向已经用数据持久化的现有实体添加一个新列会发生什么。我用的是sqlite。

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

    但当我看到 this issue in typeorm's github ,我知道如果我只是将新的“@column”注释属性添加到实体类就足够了,typeorm将在应用程序启动时自动创建列。

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

    有人能帮忙吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   JudgeFudge    6 年前

    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'