亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Nest 復(fù)雜查詢

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

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

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

相關(guān)文章

  • nodejs的HTML分析利器node-jquery用法淺析

    nodejs的HTML分析利器node-jquery用法淺析

    這篇文章主要介紹了nodejs的HTML分析利器node-jquery用法,簡單分析了node-jquery的功能并結(jié)合實例說明了node-jquery控制臺輸出信息的操作技巧,需要的朋友可以參考下
    2016-11-11
  • Node4-5靜態(tài)資源服務(wù)器實戰(zhàn)以及優(yōu)化壓縮文件實例內(nèi)容

    Node4-5靜態(tài)資源服務(wù)器實戰(zhàn)以及優(yōu)化壓縮文件實例內(nèi)容

    這篇文章主要介紹了Node4-5靜態(tài)資源服務(wù)器實戰(zhàn)以及優(yōu)化壓縮文件實例內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2019-08-08
  • koa-passport實現(xiàn)本地驗證的方法示例

    koa-passport實現(xiàn)本地驗證的方法示例

    這篇文章主要介紹了koa-passport實現(xiàn)本地驗證的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • node 解析圖片二維碼的內(nèi)容代碼實例

    node 解析圖片二維碼的內(nèi)容代碼實例

    這篇文章主要介紹了node 解析圖片二維碼的內(nèi)容代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • node連接MongoDB數(shù)據(jù)庫錯誤:MongoServerSelectionError:?connect?ECONNREFUSED?::1:27017(解決方案)

    node連接MongoDB數(shù)據(jù)庫錯誤:MongoServerSelectionError:?connect?ECON

    使用node連接MongoDB數(shù)據(jù)庫時發(fā)生報錯,MongoServerSelectionError:?connect?ECONNREFUSED?::1:27017,本文給大家分享原因分析及解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • node.js中的事件處理機制詳解

    node.js中的事件處理機制詳解

    相信接觸過編程的同學(xué)應(yīng)該都了解,在訪問任何網(wǎng)頁的時候,會伴隨著許多的事件,例如點擊菜單,移動鼠標(biāo)等等。那么node.js是如何處理的?下面通過這篇文章就來給大家詳細的介紹下node.js中的事件處理機制,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • express搭建的nodejs項目使用webpack進行壓縮打包

    express搭建的nodejs項目使用webpack進行壓縮打包

    對于打包這個問題它并不是難點,但是對于我們這種初學(xué)者來說,根本就不知道應(yīng)該怎么做,下面這篇文章主要給大家介紹了關(guān)于express搭建的nodejs項目使用webpack進行壓縮打包的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • node版本快速切換及管理方法

    node版本快速切換及管理方法

    這篇文章主要為大家介紹了node版本快速切換及管理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Node.js中 __dirname 的使用介紹

    Node.js中 __dirname 的使用介紹

    這篇文章主要給大家介紹了關(guān)于Node.js中 __dirname使用的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • 優(yōu)化Node.js Web應(yīng)用運行速度的10個技巧

    優(yōu)化Node.js Web應(yīng)用運行速度的10個技巧

    這篇文章主要介紹了優(yōu)化Node.js Web應(yīng)用運行速度的10個技巧,本文講解了從并行、異步、緩存、gzip 壓縮、客戶端渲染等等技巧,需要的朋友可以參考下
    2014-09-09

最新評論