Как получить данные ассоциации вместе с реляционными данными в TypeORM? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть этот класс сущностей. Это связь между двумя таблицами.

import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
import { Classroom } from "./Classroom";
import { Teacher } from "./Teacher";

@Index("fk_class_has_teacher_teacher1_idx", ["teacherId"], {})
@Index("fk_class_has_teacher_class1_idx", ["classId"], {})
@Entity("teacherclassroom", { schema: "school" })
export class Teacherclassroom {
  @Column("int", { primary: true, name: "class_id" })
  classId: number;

  @Column("int", { primary: true, name: "teacher_id" })
  teacherId: number;

  @Column("datetime", {
    name: "reg_date",
    nullable: true,
    default: () => "CURRENT_TIMESTAMP"
  })
  regDate: Date | null;

  @ManyToOne(
    () => Classroom,
    classroom => classroom.teacherclassrooms,
    { onDelete: "NO ACTION", onUpdate: "NO ACTION" }
  )
  @JoinColumn([{ name: "class_id", referencedColumnName: "id" }])
  class: Classroom;

  @ManyToOne(
    () => Teacher,
    teacher => teacher.teacherclassrooms,
    { onDelete: "NO ACTION", onUpdate: "NO ACTION" }
  )
  @JoinColumn([{ name: "teacher_id", referencedColumnName: "id" }])
  teacher: Teacher;
}

То, что я пытаюсь сделать, это получить сведения об учителе и классе, когда я получаю строку из этой ассоциации. Я сделал это следующим образом,

import "reflect-metadata";
import { createConnection, getRepository } from "typeorm";
import { Teacherclassroom } from "./entity/Teacherclassroom";
import { Classroom } from "./entity/Classroom";
import { Teacher } from "./entity/Teacher";

createConnection().then(async connection => {

    const myRepository = getRepository(Teacherclassroom);
    const test = myRepository.find({ relations: ["teacher", "classroom"] });
    console.log(test);

}).catch(error => console.log(error));

Я получаю эту ошибку,

Relation was not found, please check if it is correct and really exist in your entity.

1 Ответ

2 голосов
/ 18 марта 2020

Просто измените class на classroom в классе

@ManyToOne(() => Classroom,classroom => classroom.teacherclassrooms,
{ onDelete: "NO ACTION", onUpdate: "NO ACTION" })
@JoinColumn([{ name: "class_id", referencedColumnName: "id" }])
classroom: Classroom;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...