【问题标题】:Nestjs TypeORM syntax error at or near "AND"Nestjs TypeORM 语法错误在“AND”处或附近
【发布时间】:2021-12-10 13:03:30
【问题描述】:

我正在我的系统中构建一个 UserService 类,并声明它应该是一个简单的“查找”方法,但我收到了如下图所示的错误:

这是我的service 方法:


@Injectable()
export class UsersService {
...
async findByRA(academicRegister: string) {
    return await this.userRepository.findOne({
      where: { academicRegister: academicRegister },
    });
  }
...
}

这是我的controller

@Controller('users')
export class UsersController {
...
@Get('ra/:ra')
  findByRa(@Param('ra') ra: string) {
    return this.usersService.findByRA(ra);
  }
...
}

这是我的User 实体,如果我将eager 更改为false,则不会发生错误,但是我没有从我需要的子实体中获取数据

@Entity()
export class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  @ApiProperty({ enum: UserRole, enumName: 'UserRole' })
  userRole: UserRole;

  @Column()
  academicRegister: string;

  @Column()
  password: string;

  @OneToOne(() => Coordinator, (coordinator) => coordinator.user, {
    eager: true,
    nullable: true,
    cascade: ['insert', 'update', 'soft-remove', 'recover'],
  })
  coordinator?: Coordinator;

  @OneToOne(() => Monitor, (monitor) => monitor.user, {
    eager: true,
    nullable: true,
    cascade: ['insert', 'update', 'soft-remove', 'recover'],
  })
  monitor?: Monitor;

  @CreateDateColumn()
  creationDate: Date;

  @DeleteDateColumn()
  deletionDate?: Date;

  @Column({ nullable: true })
  deletedBy?: string;
}

这些是子实体中的相关列:

export class Coordinator {
...
  @Column({ nullable: true, unique: true })
  userId: string;

  @OneToOne(() => User, (user) => user.coordinator, {
    orphanedRowAction: 'nullify',
    cascade: ['insert', 'update', 'soft-remove', 'recover'],
  })
  user: User;
...
}
export class Monitor {
...
  @Column({ nullable: true, unique: true })
  userId: string;

  @OneToOne(() => User, (user) => user.monitor, {
    orphanedRowAction: 'nullify',
    cascade: ['insert', 'update', 'soft-remove', 'recover'],
  })
  user: User;
...
}

【问题讨论】:

  • 请不要发布异常的图片,而是发布内容

标签: node.js postgresql nestjs typeorm


【解决方案1】:

每次加载实体时都会自动加载急切关系 来自数据库。

当您将加载您的 CoordinatorMonitor 实体时,您无需手动调用您的关系,它将自动完成。

您必须以错误的方式访问您的实体。

【讨论】:

  • 如果您理解代码的含义,请尝试更改您的代码,或者只显示代码您如何访问您的关系。
猜你喜欢
  • 2020-02-23
  • 2020-12-26
  • 1970-01-01
  • 2018-01-26
  • 2014-04-26
  • 1970-01-01
  • 2017-02-20
  • 2013-09-10
  • 2017-06-10
相关资源
最近更新 更多