Nest 復雜查詢示例解析
Nest 復雜查詢
復雜查詢包括分頁、模糊查詢、多條件篩選、排序等,滿足前端對查詢的所有訴求。
Nest 復雜查詢,主要使用 repository.findAndCount()方法實現(xiàn)。
假設有一個能分頁查詢所有用戶,可根據(jù)用戶名進行篩選,并對結(jié)果按照更新時間倒序排序的需求,它的 controller 如下:
@Post()
@Roles(Role.Admin, Role.SuperAdmin)
async pageQuery(@Body() dto: QueryUserDto) {
const res = await this.userService.pageQuery(dto);
return successResult(res);
}
QueryUserDto是查詢參數(shù)類型
// BaseQueryDto.ts
import { IsNotEmpty, IsNumber } from 'class-validator';
export class BaseQueryDto {
@IsNotEmpty()
@IsNumber()
page: number;
@IsNotEmpty()
@IsNumber()
pageSize: number;
}
// QueryUserDto.ts
export class QueryUserDto extends BaseQueryDto {
username: string;
}
UserService如何實現(xiàn)
// user.service.ts
async pageQuery(dto: QueryUserDto) {
const { username, pageSize, page } = dto;
// 篩選狀態(tài)為正常的數(shù)據(jù)
const queryFilter: any = { status: DATA_STATUS.NORMAL };
if (username) {
// 模糊查詢 username
queryFilter.username = Like(`%${username}%`);
}
const res = await this.userRepository.findAndCount({
// 查詢條件
where: queryFilter,
// 排序
order: { updateTime: 'DESC' },
// offset,分頁的偏移量
skip: (page - 1) * pageSize,
// 每頁條數(shù)
take: pageSize,
// 是否緩存
cache: true,
});
return loadPageQueryResult(res, pageSize);
}
// 拼接返回結(jié)果的數(shù)據(jù)結(jié)構(gòu)
export function loadPageQueryResult(findAndCountRes: any, pageSize: number) {
const list = findAndCountRes[0];
const totalCount = findAndCountRes[1];
const totalPage = Math.ceil(totalCount / pageSize);
return {
list,
totalCount,
totalPage,
};
}
通過 findAndCount()方法可以一次性得到想要的結(jié)果,它支持傳入多個參數(shù)。
where 主要傳入查詢條件,是一個對象,對象的 key 是數(shù)據(jù)庫字段,value 是要查詢的值,把上面的 queryFilter 合并一下,就是如下這種形式,要查多少個屬性都可以。
{
status: DATA_STATUS.NORMAL,
username: Like(`%${username}%`)
}以上就是Nest 復雜查詢示例解析的詳細內(nèi)容,更多關于Nest 復雜查詢的資料請關注腳本之家其它相關文章!
相關文章
Node.js中child_process實現(xiàn)多進程
這篇文章主要介紹了Node.js中child_process實現(xiàn)多進程,需要的朋友可以參考下2015-02-02
nodeJs實現(xiàn)基于連接池連接mysql的方法示例
這篇文章主要介紹了nodeJs實現(xiàn)基于連接池連接mysql的方法,結(jié)合具體實例形式分析了nodejs連接池操作mysql數(shù)據(jù)庫連接的實現(xiàn)與使用技巧,需要的朋友可以參考下2018-02-02
Node中node_modules文件夾及package.json文件的作用說明
這篇文章主要介紹了Node中node_modules文件夾及package.json文件的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
node連接MySQL數(shù)據(jù)庫的3種方式總結(jié)
現(xiàn)在前端基本上都會用一些NodeJs,想必也想自己寫一些API或者個人博客的后臺系統(tǒng),這些就離不開連接數(shù)據(jù)庫的問題,下面這篇文章主要給大家介紹了關于node連接MySQL數(shù)據(jù)庫的3種方式,需要的朋友可以參考下2022-08-08

