我有一个用户表,其中一列是引用自身的联系人。现在,我正在尝试获取所有用户的联系人。但是,它不返回引用。我不确定问题出在哪里。可以说我有一个像这样的用户表
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;
因为我们要引用实体
答案 0 :(得分:0)
我实际上做了同样的事情(复制了您的实体),不同之处在于我将存储库注入了我的服务,我正在使用mySQL,我猜您正在使用PostgreSQL,但是它对我有用。 困扰我的是您的列contacts_Id,默认情况下,typeorm会生成一个驼峰式外键列(contactId),除非JoinColumn()装饰器另行指定,否则可能是导致问题的原因。 (我想发表评论,但没有足够的代表发表评论。)