typescript - 如何在不先加载数据的情况下过滤数据?
问题描述
我正在使用 nestjs-typeorm 并希望根据一些参考过滤掉嵌套数据。该代码首先加载整个数据库,然后过滤所需的结果。如何在不加载整个数据库表的情况下过滤掉所需的数据,使其更高效、更快速?
服务.ts
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;
}
}
解决方案
您可以使用createQueryBuilder
TypeORM 在 SQL 中进行过滤,而无需使用后查询过滤器。
const trees = await this.repository.createQueryBuilder('tree')
.where('tree.isDeleted IS FALSE OR NULL')
.andWhere('tree.referenceID = :referenceId', { referenceId: fileReferenceParams.referenceID })
.andWhere('tree.referenceType = :referenceType', { referenceType: fileReferenceParams.referenceType })
.getMany();
在TypeORM 文档中了解有关查询生成器的更多信息,以使用 SQL 搜索参数执行查询
推荐阅读
- regex - 用自定义函数替换 Print 语句调用
- javascript - 为什么要从 DOM 中删除元素?
- r - 如果满足条件,则计算案例:按列分组
- bash - 如何在 bash 中取特定值?
- linux - 在 EC2 AMI 中调整/重新调整 SWAP 内存大小
- google-apps-script - 谷歌脚本如何使用电子表格单元格中的值作为 URLFetchApp.fetch() 中的 URL
- c++ - 如何禁用预处理器的死代码分析?
- python - Python,球形图 - 颜色缩放
- php - 如何正确运行此 php 电报机器人代码?
- javascript - Gulp4 手表不跟随文件更改