代码之家  ›  专栏  ›  技术社区  ›  vorillaz

在运行时为Mongoose添加全局插件

  •  0
  • vorillaz  · 技术社区  · 6 年前

    我目前正在尝试在运行时附加一个没有运气的全局Mongoose。我的插件需要一些依赖性和选项生成我的应用程序的引导,因此我需要按顺序添加它。Mongoose似乎忽略了闭包中的所有内容。

    const mongoose = require('mongoose');
    
    const config = {};
    const {DB_CONNECT} = process.env;
    
    const myPlugin = schema => {
      console.log('done'); // this line is not logged at all
      schema.methods.mymethod = () => {};
    }
    
    const connectAndAddPlugins = async () => {
      await mongoose.connect(
        DB_CONNECT,
        {...config}
      );
      mongoose.plugin(myPlugin)
    };
    
    connectAndAddPlugins();
    

    任何帮助都将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  0
  •   vorillaz    6 年前

    显然,由于一个模型被编译并加载了Mongoose全局插件,因此不再连接该模型,因此应该在之后注册该模型:

    const mongoose = require('mongoose');
    
    const config = {};
    const {DB_CONNECT} = process.env;
    
    const myPlugin = schema => {
      console.log('done'); // this line is not logged at all
      schema.methods.mymethod = () => {};
    }
    
    const connectAndAddPlugins = async () => {
      await mongoose.connect(
        DB_CONNECT,
        {...config}
      );
      mongoose.plugin(myPlugin)
    };
    
    const loadModels = () => {
      const model = mongoose.model('Cat', { name: String });
    }
    
    connectAndAddPlugins();
    loadModels();