我为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.
型
3条答案
按热度按时间wgeznvg71#
发生错误的原因是您已经定义了架构。查看解决方案here
s4n0splo2#
多次使用同一型号时,以这种方式导出
字符串
ulmd4ohb3#
这是一个棘手的情况,我只是花了7个小时试图调试这个问题,因为今天我不能使用这里提供的。
这里是什么帮助我,我得到了它从这个官方网站https://mongoosejs.com/docs/faq.html#overwrite-model-error
例如,请记住,
mongoose.model('ModelName', schema)
要求“ModelName”是唯一的,因此您可以使用mongoose.model('ModelName')
访问模型。如果将mongoose.model('ModelName', schema);
放入mochabeforeEach()
钩子中,则此代码将在每次测试之前尝试创建一个名为“ModelName”的新模型,因此您将得到一个错误。确保只使用给定名称创建一次新模型。如果需要创建多个同名模型,请创建一个新连接并将模型绑定到该连接。
例如;
字符串