Nest.js初探索之实体映射数据库的三种方式

2,332 阅读1分钟

TypeOrmModule

如果我们安装了@nestjs/typeorm,那么使用TypeOrmModule.forRoot():

 TypeOrmModule.forRoot({
      type:'mysql',
      host:'localhost',
      port:3306,
      username:'root',
      password:'123456',
      database:'test',
     "entities": [],
      synchronize:true
    }),

如果这样子手动导入entity会很繁琐,所以可以在Nest根目录设置ormconfig.json文件(使用这种方式不能使用@nestjs/typeorm配置的autoLoadEntities和retryDelay配置项):

 "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "root",
  "database": "test",
  "entities": ["dist/**/*.entity{.ts,.js}"],
  "synchronize": true

但是,请注意,webpack不支持glob路径,因此如果你在monorepo中构建应用程序,就不能使用它们。

因此,nest/typeorm给我们增加了autoLoadEntities配置:

 TypeOrmModule.forRoot({
      type:'mysql',
      host:'localhost',
      port:3306,
      username:'root',
      password:'123456',
      database:'test',
      autoLoadEntities: true,
      synchronize:true
    }),

指定了该选项后,通过forFeature()方法注册的每个实体都将自动添加到配置对象的实体数组中。