BaseControllerreturn this.paginationResult(items, total, queryDto);{
"items": [],
"total": 100,
"page": 1,
"pageSize": 15,
"totalPages": 7
}BaseService<T>@Injectable()
export class ArticleService extends BaseService<Article> {
constructor(
@InjectRepository(Article)
private readonly articleRepository: Repository<Article>,
) {
super(articleRepository);
}
}create(dto, options?)createMany(dtos, options?)findOne(options?)findOneById(id, options?)findAll(options?)paginate(paginationDto, options?)paginateQueryBuilder(queryBuilder, paginationDto, ...)updateById(id, dto, options?)delete(id)deleteMany(ids)restore(id)count(options?)create()await this.create({
title: "Hello",
content: "World",
});paginate()return this.paginate(queryDto, {
where,
relations: ["author"],
order: { createdAt: "DESC" },
});paginateQueryBuilder()const qb = this.repository.createQueryBuilder("article");
return this.paginateQueryBuilder(qb, queryDto);await this.findOneById(id, {
excludeFields: ["password", "author.password"],
});
await this.findOneById(id, {
includeFields: ["id", "title", "author.id", "author.nickname"],
});return this.withTransaction(async (manager) => {
const articleRepo = manager.getRepository(Article);
const categoryRepo = manager.getRepository(Category);
const article = articleRepo.create(dto);
await articleRepo.save(article);
await categoryRepo.increment({ id: dto.categoryId }, "articleCount", 1);
return article;
});ilike(field, value)textSearch(field, value)jsonQuery(jsonField, path, value)arrayContains(field, value)