Typescript 如何在不先加载数据的情况下过滤数据?

Typescript 如何在不先加载数据的情况下过滤数据?,typescript,graphql,nestjs,typeorm,tree-structure,Typescript,Graphql,Nestjs,Typeorm,Tree Structure,我正在使用nestjs typeorm,希望根据一些引用过滤掉嵌套数据。代码首先加载整个数据库,然后过滤所需的结果。如何在不加载整个数据库表的情况下过滤出所需的数据,从而提高效率和速度 服务台 public async uploadedFiles(fileReferenceParams: ReferenceFilterParams): Promise<UploadedFilesEntity[]> { try { const manager = getManager

我正在使用nestjs typeorm,希望根据一些引用过滤掉嵌套数据。代码首先加载整个数据库,然后过滤所需的结果。如何在不加载整个数据库表的情况下过滤出所需的数据,从而提高效率和速度

服务台

public async uploadedFiles(fileReferenceParams: ReferenceFilterParams): Promise<UploadedFilesEntity[]> {
    try {
      const manager = getManager();
      const trees = await manager.getTreeRepository(UploadedFilesEntity).findTrees();
      this.uploadedFilesRepository.createQueryBuilder()
      const rootFiles = trees.filter(tree => ( tree.isDeleted==false||null && tree.referenceID == fileReferenceParams.referenceID && tree.referenceType == fileReferenceParams.referenceType));
      return rootFiles;
    } catch (error) {
      return error;
    }
  }

public异步上传文件(fileReferenceParams:ReferenceFilterParams):承诺{
试一试{
const-manager=getManager();
const trees=await manager.getTreeRepository(UploadedFilesEntity.findTrees();
this.uploadedFilesRepository.createQueryBuilder()
const rootFiles=trees.filter(tree=>(tree.isDeleted==false | | null&&tree.referenceID==fileReferenceParams.referenceID&&tree.referenceType==fileReferenceParams.referenceType));
返回根文件;
}捕获(错误){
返回误差;
}
}

您可以使用TypeORM的
createQueryBuilder
在SQL中进行筛选,而无需查询后筛选

consttrees=wait this.repository.createQueryBuilder('tree'))
.where('tree.isDeleted为FALSE或NULL')
.andWhere('tree.referenceID=:referenceID',{referenceID:fileReferenceParams.referenceID})
.andWhere('tree.referenceType=:referenceType',{referenceType:fileReferenceParams.referenceType})
.getMany();
了解有关查询生成器的详细信息,以使用SQL搜索参数执行查询