gpt4 book ai didi

postgresql - 如何使用 TypeORM 设置与自定义 ID 名称的多对多关系

转载 作者:行者123 更新时间:2023-11-29 13:08:59 25 4
gpt4 key购买 nike

我有一个用户、角色和 user_role 表。

当我创建@ManyToMany 关系时,当我尝试连接表时出现错误,因为查询使用“roleId”,但我将其命名为“role_id”,但我不知道如何设置列名。

// User.ts

@ManyToMany(type => Role, role => role.users)
@JoinTable({name: 'user_role'})
roles?: Role[];
// Role.ts

@ManyToMany(type => User, user => user.roles)
@JoinTable({name: 'user_role'})
users: User[];

要查询的用户服务:

    public static getAllByRole(role: RoleEnum): Promise<User[]> {
return this.userRepository()
.createQueryBuilder('user')
.leftJoinAndSelect(
'roles',
'role',
'role.user_id = user.id'
).where('role.role_id = :id', {id: role})
.getMany();
}

我希望所有用户都具有特定角色,例如“管理员”。

但是它抛出一个错误:

console.log node_modules/typeorm/platform/PlatformTools.js:193
query failed: INSERT INTO "user_role"("roleId", "userId") VALUES ($1, DEFAULT), ($2, DEFAULT) -- PARAMETERS: ["ROLE_ADMIN","ROLE_USER"]

console.log node_modules/typeorm/platform/PlatformTools.js:193
error: { error: column "roleId" of relation "user_role" does not exist

最佳答案

我找到了:

// User.ts

@Field(type => [Role])
@ManyToMany(type => Role, role => role.users)
@JoinTable({
name: 'user_role', joinColumn: {
name: 'user_id',
referencedColumnName: 'id'
},
inverseJoinColumn: {
name: 'role_id',
referencedColumnName: 'id'
}
})
roles?: Role[];


// Role.ts

@ManyToMany(type => User, user => user.roles)
@JoinTable({
name: 'user_role',
joinColumn: {
name: 'role_id',
referencedColumnName: 'id'
},
inverseJoinColumn: {
name: 'user_id',
referencedColumnName: 'id'
}
})
users: User[];

关于postgresql - 如何使用 TypeORM 设置与自定义 ID 名称的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57233752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com