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

success to show version err log by using exception handling

kaori-t 5 лет назад
Родитель
Сommit
a60a3ff71b

+ 11 - 1
src/client/js/components/Admin/ImportData/GrowiArchive/UploadForm.jsx

@@ -31,7 +31,17 @@ class UploadForm extends React.Component {
     formData.append('_csrf', this.props.appContainer.csrfToken);
     formData.append('file', this.inputRef.current.files[0]);
 
-    const { data } = await this.props.appContainer.apiv3Post('/import/upload', formData); // ここにアップロードしたデータが渡ってきている
+    try{
+      const { data } = await this.props.appContainer.apiv3Post('/import/upload', formData);
+    } catch(err) {
+      if(err[0].code === 'versions-are-not-met'){
+        console.log('エラーが出ました versions-are-not-met!!');
+      } else {
+        console.log(`普通のエラーが出ました`);
+      }
+    }
+
+
     this.props.onUpload(data);
     // TODO: toastSuccess, toastError
   }

+ 23 - 3
src/server/routes/apiv3/import.js

@@ -8,6 +8,7 @@ const multer = require('multer');
 const express = require('express');
 
 const GrowiArchiveImportOption = require('@commons/models/admin/growi-archive-import-option');
+const ErrorV3 = require('../../models/vo/error-apiv3');
 
 
 const router = express.Router();
@@ -309,17 +310,36 @@ module.exports = (crowi) => {
 
     try {
       const data = await growiBridgeService.parseZipFile(zipFile);
-
-      // validate with meta.json
-      importService.validate(data.meta);
     }
     catch (err) {
+      console.log('aaa');
+      const varidationErr = 'versions-are-not-met';
       // TODO: use ApiV3Error
       logger.error(err);
       return res.status(500).send({ status: 'ERROR' });
     }
+    try {
+      console.log('bbb');
+      // validate with meta.json
+      importService.validate(data.meta);
+    } catch {
+      console.log('ccc');
+      const msg = 'the version of this growi and the growi that exported the data are not met'
+      const varidationErr = 'versions-are-not-met';
+      return res.apiv3Err(new ErrorV3(msg, varidationErr), 500);
+    }
   });
 
+  // try {
+  //   importService.validate(meta);
+  // }
+  // catch (err) {
+  //   const varidationErr = 'versions-are-not-met';
+  //   logger.error(err);
+  //   this.adminEvent.emit('onErrorForImport', { message: err.message });
+  //   return res.apiv3Err(varidationErr, 500);
+  // }
+
   /**
    * @swagger
    *

+ 2 - 0
src/server/service/import.js

@@ -17,6 +17,8 @@ const { ObjectId } = mongoose.Types;
 const { createBatchStream } = require('../util/batch-stream');
 const CollectionProgressingStatus = require('../models/vo/collection-progressing-status');
 
+// const ErrorV3 = require('../models/vo/error-apiv3');
+
 
 const BULK_IMPORT_SIZE = 100;