【发布时间】:2021-11-25 09:13:58
【问题描述】:
我必须在findAll() 方法中引入分页。我真的不知道该怎么做。我试过了,但它给出了很多错误。为此,我使用了typeorm 提供的findAndCount() 方法,但我不确定它是如何工作的。
截至目前,以下方法返回所有记录。我需要一次返回 10 条记录。请建议我需要做什么修改。
async findAll(queryCertificateDto: QueryCertificateDto,page=1): Promise<PaginatedResult> {
let { country, sponser } = queryCertificateDto;
const query = this.certificateRepository.createQueryBuilder('certificate');
if (sponser) {
sponser = sponser.toUpperCase();
query.andWhere('Upper(certificate.sponser)=:sponser', { sponser });
}
if (country) {
country = country.toUpperCase();
query.andWhere('Upper(certificate.country)=:country', { country });
}
const certificates = query.getMany();
return certificates;
}
这是PaginatedResult 文件。
export class PaginatedResult {
data: any[];
meta: {
total: number;
page: number;
last_page: number;
};
}
我尝试更改 findAll() 的代码,但 where 子句给出错误。我不知道如何处理pagination 中的query.getMany()。
const take = query.take || 10
const skip = query.skip || 0
const [result, total] = await this.certificateRepository.findAndCount(
{
where: query.getMany(), //this is giving error
take:take,
skip:skip
}
);
return result;
我需要在这个方法中引入分页。任何帮助都会非常有帮助。
【问题讨论】:
-
where子句通常用于提供条件。在您的情况下,query.getMany()没有提供条件。
标签: javascript orm nestjs backend typeorm