【问题标题】:TypeORM - Auto fill table when running serverTypeORM - 运行服务器时自动填充表
【发布时间】:2021-12-12 16:00:32
【问题描述】:

在 TypeORM 中,可以在运行服务器时运行迁移。我有一张名为 Roles 的表。这些是用户可以拥有的不同角色(管理员、用户、...)。有没有办法将这些值自动插入到创建的角色表中?

我知道我可以通过插入每个角色来更改迁移文件。但是有没有更清洁的方法来实现这一点?

【问题讨论】:

    标签: sql typeorm user-roles


    【解决方案1】:

    您可以使用typeorm-seeding 库,它很容易使用,在创建实体后,您应该创建一个工厂和播种机来运行您的种子,一个简单的示例:

        Factory
    The purpose of a factory is to create new entities with generate data.
    
    Note: Factories can also be used to generate data for testing.
    
    // user.factory.ts
    define(User, (faker: typeof Faker) => {
      const gender = faker.datatype.number(1)
      const firstName = faker.name.firstName(gender)
      const lastName = faker.name.lastName(gender)
    
      const user = new User()
      user.name = `${firstName} ${lastName}`
      user.password = faker.random.word()
      return user
    })
    
    // pet.factory.ts
    define(Pet, (faker: typeof Faker) => {
      const gender = faker.datatype.number(1)
      const name = faker.name.firstName(gender)
    
      const pet = new Pet()
      pet.name = name
      pet.age = faker.datatype.number()
      pet.user = factory(User)() as any
      return pet
    })
    Seeder
    And last but not least, create a seeder. The seeder can be called by the configured cli command seed:run. In this case, it generates 10 pets with a owner (User).
    
    Note: seed:run must be configured first. Go to CLI Configuration.
    
    // create-pets.seed.ts
    export default class CreatePets implements Seeder {
      public async run(factory: Factory, connection: Connection): Promise<any> {
        await factory(Pet)().createMany(10)
      }
    }
    

    您可以在文档中找到所需的一切

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多