【问题标题】:typeorm "\"user\" alias was not found. Maybe you forgot to join it?"typeorm "\"user\" 别名未找到。可能你忘记加入了?
【发布时间】:2020-06-24 04:51:33
【问题描述】:

我正在学习 typeorm。
我有一个问题。请帮帮我

@Entity('user')
export class User extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column({ type: 'varchar', length: '100', unique: true })
  email: string;

  @Column({ type: 'varchar', length: '10', unique: true })
  nickname: string;

  @Column({ type: 'varchar', length: '100' })
  password: string;

  @CreateDateColumn({ name: 'created_at' })
  createdAt: Date;

  @UpdateDateColumn({ name: 'updated_at' })
  updatedAt: Date;

  // One to One
  @Column({ nullable: true })
  avatarId: number;

  @OneToOne(() => Avatar)
  @JoinColumn()
  avatar: Avatar;
}

这是我的用户实体

@Entity('avatar')
export class Avatar extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ type: 'varchar', length: '255' })
  src: string;
}

这是我的头像实体

我想加入他们并打电话,所以我的查询构建器是

const createdUser = await createQueryBuilder('user')
    .leftJoinAndSelect('user.avatar', 'avatar')
    .where('user.email = :email', { email })
    .getOne();

但是当我执行这个时,错误来了

"\"user\" alias was not found. Maybe you forgot to join it?"

不知道哪里出错了
我搜索文档和谷歌搜索,
(我英语说得不好,很难……)
请帮我看看有什么问题

【问题讨论】:

  • 您使用的是什么数据库? MySQL 还是 Postgres?
  • @AdlanArifZakaria MySQL!!

标签: mysql typeorm


【解决方案1】:

尝试为您的加入添加条件:

.leftJoinAndSelect('user.avatar', 'avatar', 'avatar.id = user.avatarId')

或/和用户实体中头像列的反面

  @OneToOne(() => Avatar, data => data.user)
  @JoinColumn()
  avatar: Avatar;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 2016-08-20
    • 2021-07-11
    • 1970-01-01
    • 2021-09-08
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多