node.js - 如何使用查询生成器过滤一对多关系
问题描述
我有
@Entity('procedures')
export class ProcedureEntity {
@PrimaryGeneratedColumn()
id: number;
@OneToMany(type => MediaFileEntity, media => media.procedure, {
cascade: true
})
files: MediaFileEntity[];
};
和
@Entity('media_files')
export class MediaFileEntity {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: true })
deletedAt: Date;
@ManyToOne(type => ProcedureEntity, procedure => procedure.files)
procedure: ProcedureEntity;
};
有谁知道我如何创建一个查询生成器,以便我获得所有程序,但使用具有deletedAt
NULL 的媒体文件?
我正在尝试做
const procedures = await this.procedureRepository
.createQueryBuilder("procedure")
.leftJoinAndSelect("procedure.doctor", "doctor")
.leftJoinAndSelect("procedure.patient", "patient")
.innerJoin('procedure.files', 'mediaFile', 'mediaFile.deletedAt IS NULL')
.where("(patient.id = :id OR doctor.id = :doctorId)", { id: user.id, doctorId: user.id })
.andWhere('procedure.deletedAt IS NULL')
.getMany();
但我明白了Cannot find name 'where'
。这很奇怪,因为this.procedureRepository
.createQueryBuilder("procedure")
也是 a SelectQueryBuilder<ProcedureEntity>
,所以是this.procedureRepository
.createQueryBuilder("procedure")
.leftJoinAndSelect("procedure.doctor", "doctor")
.leftJoinAndSelect("procedure.patient", "patient")
.innerJoin('procedure.files', 'mediaFile', 'mediaFile.deletedAt IS NULL');
提前致谢!
编辑:很有趣,我已经有了答案。但我还是要把它留在这里,为了后代
解决方案
您有语法错误。后面有分号innerJoin
。这是错误的原因吗?
推荐阅读
- javascript - 在 intellj 中按文件路径对 javascript 导入进行排序
- javascript - 从 React.Component 扩展时,VS Code 会在 `super(props);` 上发出警告
- c# - C# 莫尔斯电码应用程序中的声音问题、字符串不返回和音频问题
- python - 如何在 tkinter 中为函数添加键盘快捷键
- csv - JMeter - 如何使用 CSV 作为数据集运行并行执行?
- java - 在Java中反转句子
- java - 给定一个元素,如何擦除具有给定元素值的所有节点?
- c# - SOAP 1.2 POST 请求在 Postman 中工作,在本地 Visual Studio 解决方案中不起作用——“根级别的数据无效”
- node.js - 如何解决 Mongoose 损坏的身份验证
- reactjs - 如何拥有同一个顶级片段容器的多个同级实例?