关于TypeOrm
来源:8-6 使用TypeOrm创建多个实体&创建1对1关系

暮雩
2023-05-25
老师我使用 TypeOrmModule.forRootAsync 这个方法时,创建不了表。
使用 TypeOrmModule.forRoot 方法可以创建表
这是为什么
代码:
app.module.ts
import { Module } from '@nestjs/common'; import { UserModule } from './user/user.module'; import { ConfigModule, ConfigService } from '@nestjs/config'; // 使用.env 的环境配置 import * as dotenv from 'dotenv'; // 环境配置验证 import * as Joi from 'joi'; import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm'; import { ConfigEnum } from './enum/config.enum'; import { User } from './user/user.entity'; import { Profile } from './user/profile.entity'; import { Logs } from './logs/logs.entity'; import { Roles } from './roles/roles.entity'; const envFilePath = `.env.${process.env.NODE_ENV || `devlopment`}`; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, //是否是全局的,设置为true 后可以去哪聚使用 envFilePath, // 加载自定义配置 load: [() => dotenv.config({ path: '.env' })], validationSchema: Joi.object({ NODE_ENV: Joi.string() .valid('development', 'production') .default('development'), DB_PORT: Joi.number().default(3306), DB_HOST: Joi.string().ip(), DB_TYPE: Joi.string().valid('mysql', 'postgres'), DB_DATABASE: Joi.string().required(), DB_USERNAME: Joi.string().required(), DB_PASSWORD: Joi.string().required(), DB_SYNC: Joi.boolean().default(false), }), }), // 链接mysql数据库 TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], //注入 useFactory: (configService: ConfigService) => ({ type: configService.get(ConfigEnum.DB_TYPE), host: configService.get(ConfigEnum.DB_HOST), port: configService.get(ConfigEnum.DB_PORT), username: configService.get(ConfigEnum.DB_USERNAME), password: configService.get(ConfigEnum.DB_PASSWORD), database: configService.get(ConfigEnum.DB_DATABASE), entities: [User, Profile, Logs, Roles], // 同步蹦迪的schema与数据库 -> 初始化的时候去使用 synchronize: configService.get(ConfigEnum.DB_SYNC), logging: ['error'], } as TypeOrmModuleOptions), }), // 可以创建表 // TypeOrmModule.forRoot({ // type: 'mysql', // host: 'localhost', // port: 3307, // username: 'root', // password: 'example', // database: 'testdb', // entities: [User, Profile, Logs, Roles], // // 同步蹦迪的schema与数据库 -> 初始化的时候去使用 // synchronize: true, // logging: ['error'], // }), UserModule, ], controllers: [], providers: [], }) export class AppModule {}
user.entity.ts
/* eslint-disable prettier/prettier */ import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { // PrimaryGeneratedColumn 注解 @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() password: string; }
写回答
1回答
-
使用上面的代码我成功创建了表格,检查
configService.get(ConfigEnum.DB_SYNC)
是否为true
022023-06-05
相似问题