Mongoose OverwriteModelError:编译后无法覆盖模型
Posted
技术标签:
【中文标题】Mongoose OverwriteModelError:编译后无法覆盖模型【英文标题】:Mongoose OverwriteModelError: Cannot overwrite model once compiled 【发布时间】: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.
【问题讨论】:
在任何事情之前,您都知道您的导出中有错字,对吧? Global_Tagas 而不是 Global_Tags 这能回答你的问题吗? Cannot overwrite model once compiled Mongoose 【参考方案1】:多次使用同一个模型时以这种方式导出
module.exports = mongoose.models['Global_Tags'] || mongoose.model('Global_Tags', GlobalTagsSchema)
【讨论】:
【参考方案2】:发生错误是因为您已经定义了架构。 查看解决方案here
【讨论】:
以上是关于Mongoose OverwriteModelError:编译后无法覆盖模型的主要内容,如果未能解决你的问题,请参考以下文章
在 @nestjs/mongoose 中设置 mongoose 全局选项
mongoose入门以及 mongoose 实现数据 的增删改查
Mongoose 错误 - 具有相同型号名称的 Mongoose 型号