最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nest 復(fù)雜查詢示例解析

 更新時間:2022年12月05日 14:17:37   作者:solocoder  
這篇文章主要為大家介紹了Nest 復(fù)雜查詢示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Nest 復(fù)雜查詢

復(fù)雜查詢包括分頁、模糊查詢、多條件篩選、排序等,滿足前端對查詢的所有訴求。

Nest 復(fù)雜查詢,主要使用 repository.findAndCount()方法實現(xiàn)。

假設(shè)有一個能分頁查詢所有用戶,可根據(jù)用戶名進(jìn)行篩選,并對結(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 復(fù)雜查詢示例解析的詳細(xì)內(nèi)容,更多關(guān)于Nest 復(fù)雜查詢的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • node.js發(fā)送郵件email的方法詳解

    node.js發(fā)送郵件email的方法詳解

    這篇文章主要介紹了node.js發(fā)送郵件email的方法,結(jié)合實例形式詳細(xì)分析了node.js發(fā)送郵件的原理、操作步驟、注意事項及常見問題解決方法,需要的朋友可以參考下
    2017-01-01
  • Node.js中child_process實現(xiàn)多進(jìn)程

    Node.js中child_process實現(xiàn)多進(jìn)程

    這篇文章主要介紹了Node.js中child_process實現(xiàn)多進(jìn)程,需要的朋友可以參考下
    2015-02-02
  • Node.js npm命令運(yùn)行node.js腳本的方法

    Node.js npm命令運(yùn)行node.js腳本的方法

    今天小編就為大家分享一篇Node.js npm命令運(yùn)行node.js腳本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用 Node.js 模擬滑動拼圖驗證碼操作的示例代碼

    使用 Node.js 模擬滑動拼圖驗證碼操作的示例代碼

    本篇文章主要介紹了使用 Node.js 模擬滑動驗證碼操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • nodeJs實現(xiàn)基于連接池連接mysql的方法示例

    nodeJs實現(xiàn)基于連接池連接mysql的方法示例

    這篇文章主要介紹了nodeJs實現(xiàn)基于連接池連接mysql的方法,結(jié)合具體實例形式分析了nodejs連接池操作mysql數(shù)據(jù)庫連接的實現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-02-02
  • Nodejs之http的表單提交

    Nodejs之http的表單提交

    這篇文章主要為大家詳細(xì)介紹了Nodejs之http的表單提交,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Node中node_modules文件夾及package.json文件的作用說明

    Node中node_modules文件夾及package.json文件的作用說明

    這篇文章主要介紹了Node中node_modules文件夾及package.json文件的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • express中間件加載機(jī)制示例詳解

    express中間件加載機(jī)制示例詳解

    中間件是一種方法,可以接收客戶端發(fā)來的請求,可以對請求做出響應(yīng),也可以將請求繼續(xù)交給下一個中間件繼續(xù)處理,下面這篇文章主要給大家介紹了關(guān)于express中間件加載機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • node連接MySQL數(shù)據(jù)庫的3種方式總結(jié)

    node連接MySQL數(shù)據(jù)庫的3種方式總結(jié)

    現(xiàn)在前端基本上都會用一些NodeJs,想必也想自己寫一些API或者個人博客的后臺系統(tǒng),這些就離不開連接數(shù)據(jù)庫的問題,下面這篇文章主要給大家介紹了關(guān)于node連接MySQL數(shù)據(jù)庫的3種方式,需要的朋友可以參考下
    2022-08-08
  • node.js生成與讀取csv文件方法詳解

    node.js生成與讀取csv文件方法詳解

    這篇文章主要介紹了node.js生成與讀取csv文件方法詳解,需要的朋友可以參考下
    2022-10-10

最新評論

承德县| 岳普湖县| 唐海县| 张家川| 安福县| 岐山县| 锡林浩特市| 平安县| 吴桥县| 洛川县| 康保县| 新乐市| 安龙县| 延川县| 桃源县| 浦县| 滨州市| 浦城县| 南靖县| 淄博市| 枞阳县| 辽阳县| 名山县| 青冈县| 凤冈县| 双流县| 兴和县| 望城县| 白城市| 丁青县| 内乡县| 曲松县| 临江市| 汝州市| 晋宁县| 沛县| 河池市| 巴林左旗| 新乡县| 桃江县| 沐川县|