Taichi Masuyama 4 лет назад
Родитель
Сommit
709813de22
2 измененных файлов с 13 добавлено и 0 удалено
  1. 2 0
      packages/app/src/server/models/page.js
  2. 11 0
      packages/app/src/server/service/page.js

+ 2 - 0
packages/app/src/server/models/page.js

@@ -71,6 +71,8 @@ const pageSchema = new mongoose.Schema({
 pageSchema.plugin(mongoosePaginate);
 pageSchema.plugin(uniqueValidator);
 
+// ensure v5 clean install compatibility
+pageSchema.index({ path: 1 }, { partialFilterExpression: { parent: null } });
 
 /**
  * return an array of ancestors paths that is extracted from specified pagePath

+ 11 - 0
packages/app/src/server/service/page.js

@@ -855,6 +855,17 @@ class PageService {
       return this.v5RecursiveMigration(grant, rootPath);
     }
 
+    try {
+      // drop pages.path_1 indexes
+      const conn = mongoose.connection.collection('pages');
+      await conn.dropIndexes('path_1');
+      // then create non-unique indexes
+    }
+    catch (err) {
+      // return not to set app:isV5Compatible to true
+      return logger.error('Failed to drop unique indexes.', err);
+    }
+
     try {
       await this.crowi.configManager.updateConfigsInTheSameNamespace('crowi', {
         'app:isV5Compatible': true,