Nestjs如何正确地将2个表与一个中间表映射

标签 nestjs typeorm

我使用 Postgres 作为数据库,具有以下表格:

学生

id: Integer (PK)
name: Text

主题

id: Integer (PK)
name: Text

学生分配

student_id: Integer (PK)
subject_id: Integer (PK)

这些表没有自动生成的 PK。 所以,我的实体是:

Student.entity.ts

import { Entity, Column, PrimaryGeneratedColumn, OneToMany, PrimaryColumn } from 'typeorm';
import { student_assignation } from './student_assignation.entity';
import { Subject } from './subject.entity';

@Entity()
export class Student {
  @Column('number')
  @PrimaryColumn()
  id: number;

  @Column('text')
  name: string;

  @OneToMany(type => student_assignation, x => x.subject_id)
  //student_assignations: student_assignation[];
}

嗯,这是我的问题: 我正在尝试将所有主题分配给用户。 在SQL术语中,我将其定义如下:

SELECT 
    u.id, u.name, r.id, r.name
FROM  
    student u INNER JOIN student_assignation ra
        ON u.id = ra.student_id
    INNER JOIN subject r
        ON r.id = ra.subject_id
WHERE
    u.id = 1

但目前在nestjs中转换和使用它,我有这样的关系:

@OneToMany(type => student_assignation, x => x.subject_id)

@ManyToOne(type => subject, x => x.id)

但是,没有检索任何信息。

最佳答案

您需要多对多关系。看看 TypeOrm 实现 here

关于Nestjs如何正确地将2个表与一个中间表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63137310/

相关文章:

node.js - NestJS:依赖注入(inject)和提供者注册

javascript - Nest.js - 请求实体太大 PayloadTooLargeError : request entity too large

postgresql - TypeORM:订阅两个模型

javascript - NestJS:使用 JWT 向 AuthGuard 添加验证选项

javascript - 如何在运行时在 nestjs 中扫描所有装饰器值

javascript - 使用带有 Javascript 的 TypeORM 快速路由

javascript - 找不到别名。也许你忘了加入它

migration - 有没有办法在运行 "typeorm migration:run"之前获得挂起的迁移?

configuration - 使用 dotenv 的 nestjs 配置

node.js - TypeORM 选择所有行但限制 25