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

Merge pull request #5382 from weseek/fix/error-handling-for-page-redirect

fix: No throw when PageRedirect insertion dup key error
Yuki Takei 4 лет назад
Родитель
Сommit
faeceb3011
1 измененных файлов с 16 добавлено и 2 удалено
  1. 16 2
      packages/app/src/server/service/page.ts

+ 16 - 2
packages/app/src/server/service/page.ts

@@ -1097,7 +1097,14 @@ class PageService {
       }, { new: true });
       }, { new: true });
       await PageTagRelation.updateMany({ relatedPage: page._id }, { $set: { isPageTrashed: true } });
       await PageTagRelation.updateMany({ relatedPage: page._id }, { $set: { isPageTrashed: true } });
 
 
-      await PageRedirect.create({ fromPath: page.path, toPath: newPath });
+      try {
+        await PageRedirect.create({ fromPath: page.path, toPath: newPath });
+      }
+      catch (err) {
+        if (err.code !== 11000) {
+          throw err;
+        }
+      }
 
 
       this.pageEvent.emit('delete', page, user);
       this.pageEvent.emit('delete', page, user);
       this.pageEvent.emit('create', deletedPage, user);
       this.pageEvent.emit('create', deletedPage, user);
@@ -1154,7 +1161,14 @@ class PageService {
     }, { new: true });
     }, { new: true });
     await PageTagRelation.updateMany({ relatedPage: page._id }, { $set: { isPageTrashed: true } });
     await PageTagRelation.updateMany({ relatedPage: page._id }, { $set: { isPageTrashed: true } });
 
 
-    await PageRedirect.create({ fromPath: page.path, toPath: newPath });
+    try {
+      await PageRedirect.create({ fromPath: page.path, toPath: newPath });
+    }
+    catch (err) {
+      if (err.code !== 11000) {
+        throw err;
+      }
+    }
 
 
     this.pageEvent.emit('delete', page, user);
     this.pageEvent.emit('delete', page, user);
     this.pageEvent.emit('create', deletedPage, user);
     this.pageEvent.emit('create', deletedPage, user);