Nest 复杂查询示例解析
Nest 复杂查询
复杂查询包括分页、模糊查询、多条件筛选、排序等,满足前端对查询的所有诉求。
Nest 复杂查询,主要使用 repository.findAndCount()
方法实现。
假设有一个能分页查询所有用户,可根据用户名进行筛选,并对结果按照更新时间倒序排序的需求,它的 controller
如下:
@Post() @Roles(Role.Admin, Role.SuperAdmin) async pageQuery(@Body() dto: QueryUserDto) { const res = await this.userService.pageQuery(dto); return successResult(res); }
QueryUserDto是查询参数类型
// 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如何实现
// user.service.ts async pageQuery(dto: QueryUserDto) { const { username, pageSize, page } = dto; // 筛选状态为正常的数据 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, // 每页条数 take: pageSize, // 是否缓存 cache: true, }); return loadPageQueryResult(res, pageSize); } // 拼接返回结果的数据结构 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()
方法可以一次性得到想要的结果,它支持传入多个参数。
where 主要传入查询条件,是一个对象,对象的 key 是数据库字段,value 是要查询的值,把上面的 queryFilter 合并一下,就是如下这种形式,要查多少个属性都可以。
{ status: DATA_STATUS.NORMAL, username: Like(`%${username}%`) }
以上就是Nest 复杂查询示例解析的详细内容,更多关于Nest 复杂查询的资料请关注脚本之家其它相关文章!
相关文章
node.js中实现kindEditor图片上传功能的方法教程
最近在做一个类似于论坛的系统,帖子需要进行图文并茂的显示,所以用到了富文本编辑器:kindeditor,下面这篇文章主要给大家介绍了在node.js中实现kindEditor图片上传功能的方法教程,需要的朋友可以参考借鉴,下面来一起看看吧。2017-04-04Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not
这篇文章主要介绍了Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted),非常具有实用价值,需要的朋友可以参考下2017-12-12node.js(express)中使用Jcrop进行图片剪切上传功能
最近在项目开发中遇到了这样的需求就是要实现用户上传头像,并且要保存用户裁切后的部分作为用户头像。下面给大家分享node.js(express)中使用Jcrop进行图片剪切上传功能,需要的的朋友参考下吧2017-04-04
最新评论