没有收到来自数据库的关系

时间:2019-10-14 16:21:44

标签: typeorm

我有一个用户表,其中一列是引用自身的联系人。现在,我正在尝试获取所有用户的联系人。但是,它不返回引用。我不确定问题出在哪里。可以说我有一个像这样的用户表

id | name    |        email              | contacts_Id
---|---------|---------------------------|-----
1  | foo     | foo@foo.com               | 2
2  | bar     | bar@bar.com               | 1
3  | baz     | baz@baz.com               | 1 2

该实体是这样的:

export class User {
  @PrimaryGeneratedColumn()
  public id: number;

  @Column()
  public email: string;

  @ManyToOne(type => User, user => user.contacts, {
    cascade: true,
  })
  public contact: User;

  @OneToMany(type => User, user => user.contact)
  public contacts: User[];
}

我正在这样查询:

const userRepo = getManager().getRepository('users');
const data = (await userRepo.findOne({ where: { email: email }, relations: ['contacts'] })) as UserData;

使用上面的代码,我获得了联系人部分为空的用户数据(id,名称,电子邮件)[]

已解决:

更改:

const data = (await userRepo.findOne({ where: { email: email }, relations: ['contacts'] })) as UserData;

const data = (await userRepo.findOne({ where: { email: email }, relations: ['contacts'] })) as User;

因为我们要引用实体

1 个答案:

答案 0 :(得分:0)

我实际上做了同样的事情(复制了您的实体),不同之处在于我将存储库注入了我的服务,我正在使用mySQL,我猜您正在使用PostgreSQL,但是它对我有用。 困扰我的是您的列contacts_Id,默认情况下,typeorm会生成一个驼峰式外键列(contactId),除非JoinColumn()装饰器另行指定,否则可能是导致问题的原因。 (我想发表评论,但没有足够的代表发表评论。)