Просмотр исходного кода

Changed Validation Part that added sortOrder and sort validation, and change forEach part but I will change later this part

ryuichi-e 6 лет назад
Родитель
Сommit
2ec8f8382a
1 измененных файлов с 26 добавлено и 11 удалено
  1. 26 11
      src/server/routes/apiv3/users.js

+ 26 - 11
src/server/routes/apiv3/users.js

@@ -118,7 +118,8 @@ module.exports = (crowi) => {
     }
     }
   });
   });
 
 
-  const sortingArray = ['status', 'username', 'name', 'email', 'createdAt'];
+  const sortOrderArray = ['asc', 'desc'];
+  const sortArray = ['status', 'username', 'name', 'email', 'createdAt'];
 
 
   const statusNo = {
   const statusNo = {
     registered: User.STATUS_REGISTERED,
     registered: User.STATUS_REGISTERED,
@@ -128,6 +129,7 @@ module.exports = (crowi) => {
   };
   };
 
 
   validator.statusList = [
   validator.statusList = [
+    // validate status list status array match to statusNo
     body('statusList').custom((value) => {
     body('statusList').custom((value) => {
       const error = [];
       const error = [];
       value.forEach((status) => {
       value.forEach((status) => {
@@ -137,13 +139,20 @@ module.exports = (crowi) => {
       });
       });
       return (error.length === 0);
       return (error.length === 0);
     }),
     }),
-    body('descColumns').custom((value) => {
+    // validate sortOrder : asc or desc
+    body('sortOrder').custom((value) => {
       const error = [];
       const error = [];
-      value.forEach((element) => {
-        if (sortingArray.includes(element) === false) {
-          error.push(value);
-        }
-      });
+      if (sortOrderArray.includes(value) === false) {
+        error.push(value);
+      }
+      return (error.length === 0);
+    }),
+    // validate sort : what column you will sort
+    body('sort').custom((value) => {
+      const error = [];
+      if (sortArray.includes(value) === false) {
+        error.push(value);
+      }
       return (error.length === 0);
       return (error.length === 0);
     }),
     }),
     query('page').isInt({ min: 1 }),
     query('page').isInt({ min: 1 }),
@@ -163,11 +172,17 @@ module.exports = (crowi) => {
       orOutput[element] = { $in: searchWord };
       orOutput[element] = { $in: searchWord };
     });
     });
     // Sort
     // Sort
-    const { descColumns } = req.body;
+    const { sort } = req.body;
+    const { sortOrder } = req.body;
     const sortOutput = {};
     const sortOutput = {};
-    descColumns.forEach((element) => {
-      sortOutput[element] = -1;
-    });
+    // sortOutput[sort] = (sortOrder === 'asc') ? 1 : -1;
+    /* if (sortOrder === 'asc') {
+      sortOutput[sort] = 1;
+    }
+    else {
+      sortOutput[sort] = -1;
+    } */
+    sortOutput[sort] = (sortOrder === 'desc') ? -1 : 1;
 
 
     try {
     try {
       const paginateResult = await User.paginate(
       const paginateResult = await User.paginate(