NESTJSのカスタムページ付けのデコレータ、Paginationは簡単になりました!
3884 ワード
このチュートリアルでは、Nestjs decoratorsの有効利用を可能にする良い方法です.NESTJSフレームワークについて読んだことがないなら、それは時間だと思います.ドキュメントを読んだら、それを使うのが好きです.
あまり紹介しないでください、そして、コードとうまくやってください!
内部端子
nest new pagination-app
これはあなたのための新しい新鮮なNESTJSアプリを作成します、それはあなたの好みのパッケージモジュール(NPM、糸、…等)をお好みの選択をお勧めします.内部のページネーション.TS ( src/types/)
export interface Pagination {
skip?:number;
limit?:number;
sort?:{ field:string, by:"ASC" | "DESC" }[];
search?:{ field:string, value:string }[];
}
ここでは、クライアントから期待するページ化インターフェイスを作成します.これらは、ページネーション用に送信できる最も重要なクエリパラメータです.内部取得ページ.TS ( SRC/Decorator/
import { createParamDecorator, ExecutionContext } from "@nestjs/common";
import { Request } from "express";
import { Pagination } from "../types/pagination";
export const GetPagination = createParamDecorator((data, ctx:ExecutionContext) : Pagination => {
const req : Request = ctx.switchToHttp().getRequest();
const paginationParams : Pagination = {
skip:0,
limit:10,
sort:[],
search:[]
};
paginationParams.skip = req.query.skip ? parseInt(req.query.skip.toString()) : 0;
paginationParams.limit = req.query.limit ? parseInt(req.query.limit.toString()) : 10;
// create array of sort
if(req.query.sort){
const sortArray = req.query.sort.toString().split(',')
paginationParams.sort = sortArray.map(sortItem => {
const sortBy = sortItem[0]
switch (sortBy) {
case "-":
return{
field:sortItem.slice(1),
by:'ASC'
}
case "+":
return{
field:sortItem.slice(1),
by:'ASC'
}
default:
return{
field:sortItem.trim(),
by:'DESC'
}
}
})
}
// create array of search
if(req.query.search){
const searchArray = req.query.search.toString().split(',')
paginationParams.search = searchArray.map(searchItem => {
const field = searchItem.split(":")[0]
const value = searchItem.split(":")[1]
return {
field,
value
}
})
}
return paginationParams;
})
ここでは、現在のコンテキストからリクエストを取得します.これは、同じプロパティを持つExpressリクエストオブジェクトと同じです.* paginationParamsには、ページ付けのデフォルト値が含まれます.
*クエリに基づいてPaginationスキップと制限を設定し、3項演算子を使用して、制限値とスキップクエリパラメータを数値に解析することができます.
*並べ替えのために、フィールドを並べ替え順に並べ替えるための多くの方法があります.
検索のために、フィールドと値との間には、**
内部アプリコントローラ.ts ( src/
...
@Get('/cats')
getCats(@GetPagination() pagination : Pagination): string {
return this.appService.getCats(pagination);
}
...
アプリ内サービス.ts ( src/...
getCats(pagination:Pagination){
return pagination;
}
...
ちょうどそれを返す代わりに、データベースに接続されているこのサービスを持つことができますし、DBのクエリ値を使用しているが、単純さのために我々はコンソールにそれをログに記録されます.それを試してみましょう、
npm run start:dev
でアプリを実行してみましょうこのURLを打ちましょう
official page
私はあなたがこのチュートリアルが好きだったことを願って、私は本当にあなたがNESTJSフレームワークを使用するようにアドバイスし、さらにそれがドキュメントの読み取りに行く!
よい一日をお過ごしください
Reference
この問題について(NESTJSのカスタムページ付けのデコレータ、Paginationは簡単になりました!), 我々は、より多くの情報をここで見つけました https://dev.to/omardiaa48/custom-pagination-decorator-in-nestjs-pagination-has-never-been-easier-3bl6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol