Ver Fonte

fix(post): 修复分页查询参数类型并添加参数验证

将分页参数从数字类型改为可接受字符串或数字,并添加参数验证逻辑
当参数无效时返回400错误,同时优化查询对象结构
Sakulin há 2 meses atrás
pai
commit
f53ef3005e
1 ficheiros alterados com 30 adições e 19 exclusões
  1. 30 19
      src/post/post.controller.ts

+ 30 - 19
src/post/post.controller.ts

@@ -25,29 +25,40 @@ export class PostController {
 
   @Get('/list')
   async getAllPosts(
-    @Query('length') take: number = 10,
-    @Query('start') skip: number = 0,
+    @Query('length') take: number | string,
+    @Query('start') skip: number | string,
   ) {
+    take = Number(take);
+    skip = Number(skip);
+    if (isNaN(take) || isNaN(skip)) {
+      return {
+        code: 400,
+        msg: 'Invalid length or start',
+      };
+    }
+
+    const query = {
+      skip,
+      take,
+      select: {
+        id: true,
+        title: true,
+        createdAt: true,
+        updatedAt: true,
+        tags: {
+          select: {
+            name: true,
+            id: true,
+            color: true,
+          },
+        },
+      },
+    };
+
     const prisma = this.datasource.getPrisma();
     return {
       code: 200,
-      data: await prisma.post.findMany({
-        skip: Number(skip),
-        take: Number(take),
-        select: {
-          id: true,
-          title: true,
-          createdAt: true,
-          updatedAt: true,
-          tags: {
-            select: {
-              name: true,
-              id: true,
-              color: true,
-            },
-          },
-        },
-      }),
+      data: await prisma.post.findMany(query),
     };
   }