如何在不先加载数据的情况下过滤数据?
How can I filter data without loading it first?
我正在使用 nestjs-typeorm 并想根据一些参考过滤掉嵌套数据。该代码首先加载整个数据库,然后过滤所需的结果。如何在不加载整个 table 数据库的情况下过滤出所需的数据,从而提高效率和速度?
service.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;
}
}
您可以使用 TypeORM 的 createQueryBuilder
在 SQL 中进行过滤,而无需 post 查询过滤器。
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 documentation 上的查询构建器以使用 SQL 搜索参数执行查询
我正在使用 nestjs-typeorm 并想根据一些参考过滤掉嵌套数据。该代码首先加载整个数据库,然后过滤所需的结果。如何在不加载整个 table 数据库的情况下过滤出所需的数据,从而提高效率和速度?
service.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;
}
}
您可以使用 TypeORM 的 createQueryBuilder
在 SQL 中进行过滤,而无需 post 查询过滤器。
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 documentation 上的查询构建器以使用 SQL 搜索参数执行查询