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

ensure not to initialize models in config/migrate.js

Yuki Takei 6 лет назад
Родитель
Сommit
6546b178e7
2 измененных файлов с 8 добавлено и 15 удалено
  1. 0 14
      config/migrate.js
  2. 8 1
      src/migrations/20190618055300-abolish-crowi-classic-auth.js

+ 0 - 14
config/migrate.js

@@ -6,20 +6,6 @@
  */
 
 require('module-alias/register');
-const models = require('@server/models');
-
-// generate mock crowi object
-const crowi = {
-  event: () => {
-    return { on: () => {} };
-  },
-};
-
-// initialize models
-// access each model with mongoose.models('ModelName')
-Object.keys(models).forEach((key) => {
-  models[key](crowi);
-});
 
 function getMongoUri(env) {
   return env.MONGOLAB_URI // for B.C.

+ 8 - 1
src/migrations/20190618055300-abolish-crowi-classic-auth.js

@@ -4,12 +4,19 @@ const logger = require('@alias/logger')('growi:migrate:make-email-unique');
 const mongoose = require('mongoose');
 const config = require('@root/config/migrate');
 
+function getModel(modelName) {
+  if (mongoose.modelNames().includes(modelName)) {
+    return mongoose.model(modelName);
+  }
+  return null;
+}
+
 module.exports = {
   async up(db, next) {
     logger.info('Start migration');
     mongoose.connect(config.mongoUri, config.mongodb.options);
 
-    const Config = mongoose.model('Config');
+    const Config = getModel('Config') || require('@server/models/config')();
 
     // enable passport and delete configs for crowi classic auth
     await Promise.all([