关于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
相似问题