【问题标题】:Mongoose OverwriteModelError: Cannot overwrite model once compiledMongoose OverwriteModelError:编译后无法覆盖模型
【发布时间】:2015-04-25 15:23:57
【问题描述】:

我为我的 Mongoose 模型创建了一个名为 data_models/index.js 的模块,非常简单。

var mongoose = require('mongoose'),
    Schema = mongoose.Schema,

    var GlobalTagsSchema = new Schema ({
        _Id: Schema.Types.ObjectId ,
        tag_name: {type: String, require: true, unique: true},
        createdDate : { type: Date, default: Date.now } ,
        alias : [{
            tag_name: {type: String},
            createdDate: {type: Date, default: Date.now}
        }]

    });

module.exports = {
        InitDB:function(user,pass){
            var conn = mongoose.connect('mongodb://'+user+':'+pass+'@localhost/db');
            var db = mongoose.connection;
            db.on('error',console.error.bind(console, 'connection error ....'));
            db.once('open',function callback(){
                console.log(' Database connected..');
            });
            return db ;
        },
        Global_Tagas : mongoose.model('Global_Tags', GlobalTagsSchema)
}

现在当我在 Mocha 中运行我的测试时,会这样调用

   var nebulab_data_model = require('nebulab_data_models');
       nebulab_data_model.InitDB(process.env.MONGODB_USER,process.env.MONGODB_PASSWORD);

当我运行测试时,出现以下错误:

/Users/Tag/node_modules/mongoose/lib/index.js:334
      throw new mongoose.Error.OverwriteModelError(name);
            ^
OverwriteModelError: Cannot overwrite `Global_Tags` model once compiled.

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

多次使用同一个模型时以这种方式导出

module.exports = mongoose.models['Global_Tags'] || mongoose.model('Global_Tags', GlobalTagsSchema)

【讨论】:

    【解决方案2】:

    发生错误是因为您已经定义了架构。 查看解决方案here

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2017-10-04
      • 2022-08-21
      • 2020-03-06
      • 2020-11-13
      • 2019-02-28
      • 2013-10-03
      • 2019-08-31
      相关资源
      最近更新 更多