#typescript #postgresql #typeorm
Вопрос:
Я некоторое время боролся с типом «многие к одному» / «один ко многим». Я внимательно следил за документацией по этому вопросу, но она не работает. Работа с postgresql, TS и type-graphql.
Вот код (без импорта и деталей, связанных с проблемой): Оценки сущностей
@ObjectType()
@Entity()
export class Grades extends BaseEntity {
@Field()
@PrimaryGeneratedColumn()
id!: number;
@OneToMany(() => User, (user) => user.id)
users: User[];
[...]
}
Пользователь сущности
@ObjectType()
@Entity()
export class User extends BaseEntity {
@Field()
@PrimaryGeneratedColumn()
id!: number;
@ManyToOne(() => Grades, (grades) => grades.users)
grades: Grades;
}
Итак, у меня есть оценки, у которых может быть много Пользователей, и Пользователь, у которого может быть только одна оценка. Можно создать пользователя, создать оценку и назначить оценку пользователю (она хранится в столбце gradesId). Проблема возникает, когда я пытаюсь объединить оценки с назначенными им пользователями:
решатели.ts:
@Query(() => [Grades], { nullable: true })
async grades(
): Promise<Grades[]>{
return Grades.find({relations: ["users"]})
};
когда я запустил запрос, я получил:
"TypeError: Cannot read property 'joinColumns' of undefined",
Вот как это выглядит в pgcli
Что я здесь упускаю?
Ответ №1:
Измените отношения вашей организации с оценками, как показано ниже:
@OneToMany(() => User, (user) => user.grades)
users: User[];