#ERROR [ExceptionHandler] Circular relations detected
25 messages · Page 1 of 1 (latest)
please show us those classes
@Module({
imports: [TypeOrmModule.forFeature([Review, Task]), TaskModule],
controllers: [ReviewController],
providers: [ReviewService],
exports: [ReviewService],
})
export class ReviewModule {}
@Module({
imports: [
TypeOrmModule.forFeature([Comment, Task]),
forwardRef(() => TaskModule),
],
providers: [CommentService],
controllers: [CommentController],
exports: [CommentService],
})
export class CommentModule {}
@Module({
imports: [
TypeOrmModule.forFeature([Category, Task]),
forwardRef(() => TaskModule),
],
controllers: [CategoryController],
providers: [CategoryService],
exports: [CategoryService],
})
export class CategoryModule {}
@Module({
imports: [
TypeOrmModule.forFeature([Task, Review, Comment, Category]),
forwardRef(() => ReviewModule),
forwardRef(() => CommentModule),
forwardRef(() => CategoryModule),
],
providers: [TaskService],
controllers: [TaskController],
exports: [TaskService],
})
@Module({
imports: [
TypeOrmModule.forFeature([User, Role, Review, Task, Comment]),
forwardRef(() => CommentModule),
forwardRef(() => TaskModule),
forwardRef(() => ReviewModule),
forwardRef(() => RoleModule),
],
controllers: [UserController],
providers: [UserService],
exports: [UserService],
})
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'password',
database: 'task_management',
autoLoadEntities: true,
synchronize: true,
}),
UserModule,
RoleModule,
TaskModule,
CategoryModule,
CommentModule,
ReviewModule,
],
controllers: [AppController],
providers: [AppService],
})
@quick bough here , thanks for helping
category, review, comment are related to task
I guess you got an issue with User
can you show us how it look like
both User and Comment entities
@Entity()
export class User {
@ApiProperty()
@PrimaryGeneratedColumn()
public id: number;
@ApiProperty()
@Column('text', { unique: true })
@IsNotEmpty()
@MinLength(4, {
message: 'Enter an username of at least 4 characters.',
})
@MaxLength(16, {
message: 'Enter an username of at most 16 characters.',
})
userName: string;
@ApiProperty()
@Column('text', { unique: true })
@IsEmail({
message: 'Please enter a valid email format.',
})
@IsNotEmpty()
email: string;
@Column('varchar', { length: 256, select: false, nullable: true })
@Exclude({ toPlainOnly: true })
@MinLength(6, {
message: 'Enter a password of at least 6 characters.',
})
@IsNotEmpty()
public password: string;
@ManyToMany(() => Role, (role) => role.users, {
eager: true,
})
@JoinTable({
name: 'user_role',
joinColumn: { name: 'user_id' },
inverseJoinColumn: { name: 'role_id' },
})
public roles: Role[];
@ApiProperty()
@Column('text', { default: null, nullable: true })
public forgotToken: string;
@ApiProperty()
@Column('bool', { default: false })
public verified: boolean;
@ApiProperty()
@CreateDateColumn()
public created: Date;
@ApiProperty()
@UpdateDateColumn()
public modified: Date;
@ManyToOne(() => User, { nullable: false })
@JoinColumn({ name: 'created_by' })
createdBy: User;
@ApiProperty()
@ManyToOne(() => User, { nullable: true })
@JoinColumn({ name: 'modified_by' })
public modifiedBy: User;
}
@Entity()
export class Comment {
@ApiProperty()
@PrimaryGeneratedColumn()
public id: number;
@ApiProperty()
@Column('text', { nullable: false })
text: string;
@ManyToOne(() => Task, (task) => task.taskReviews, {
onDelete: 'CASCADE',
onUpdate: 'CASCADE',
})
@JoinColumn({ name: 'task_id' })
public task!: Task;
@ApiProperty()
@CreateDateColumn()
public created: Date;
@ApiProperty()
@UpdateDateColumn()
public modified: Date;
@ManyToOne(() => User, { nullable: false })
@JoinColumn({ name: 'created_by' })
createdBy: User;
@ApiProperty()
@ManyToOne(() => User, { nullable: true })
@JoinColumn({ name: 'modified_by' })
public modifiedBy: User;
}
and the whole error message
Could be an screenshot
ok, so I'm pretty sure that this is related with typeorm
not nestjs
There's also role module
@Module({
imports: [TypeOrmModule.forFeature([Role])],
providers: [RoleService],
controllers: [RoleController],
})
export class RoleModule {}
okay and
did you have strictNullChecks: true in your tsconfig?
it's set to false "strictNullChecks": false,
ok. It's fine
I'm trying to figure out why you got that
what about doing this:
@ManyToOne('User', { nullable: false })
@JoinColumn({ name: 'created_by' })
createdBy: User;
not sure if it works