首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何消除错误:"OverwriteModelError:编译后无法覆盖`unfined`模型。“?

如何消除错误:"OverwriteModelError:编译后无法覆盖`unfined`模型。“?
EN

Stack Overflow用户
提问于 2013-02-01 15:48:11
回答 7查看 33.4K关注 0票数 24

我有一个通用的方法来更新MongoDB中任何集合的文档?

以下代码位于文件名Deleter.js

代码语言:javascript
复制
module.exports.MongooseDelete = function (schemaObj, ModelObject);
{
  var ModelObj = new mongoose.Model("collectionName",schemaObj);
  ModelObj.remove(ModelObject);
}

并在我的主文件app.js中按如下方式调用

代码语言:javascript
复制
var ModObj = mongoose.model("schemaName", schemasObj);
var Model_instance = new ModObj();
var deleter = require('Deleter.js');
deleter.MongooseDelete(schemasObj,Model_instance);

我收到以下错误:

代码语言:javascript
复制
OverwriteModelError: Cannot overwrite `undefined` model once compiled.
    at Mongoose.model (D:\Projects\MyPrjct\node_modules\mongoose\lib\index.js:4:13)

我只调用了第二个方法..如果有人有什么解决办法,请告诉我。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-06 22:28:00

我认为您已经在同一模式上实例化了两次mongoose.Model()。您应该只创建一次每个模型,并拥有一个全局对象,以便在需要时获取它们

我假设您在$YOURAPP/models/目录下的不同文件中声明了不同的模型

代码语言:javascript
复制
$YOURAPPDIR/models/
 - index.js
 - A.js
 - B.js

index.js

代码语言:javascript
复制
module.exports = function(includeFile){
    return require('./'+includeFile);
};

A.js

代码语言:javascript
复制
module.exports = mongoose.model('A', ASchema);

B.js

代码语言:javascript
复制
module.exports = mongoose.model('B', BSchema);

在你的app.js中

代码语言:javascript
复制
APP.models = require('./models');  // a global object

当你需要它的时候

代码语言:javascript
复制
// Use A
var A = APP.models('A');
// A.find(.....

// Use B
var B = APP.models('B');
// B.find(.....
票数 33
EN

Stack Overflow用户

发布于 2014-10-06 21:39:20

我设法像这样解决了这个问题:

代码语言:javascript
复制
var Admin;

if (mongoose.models.Admin) {
  Admin = mongoose.model('Admin');
} else {
  Admin = mongoose.model('Admin', adminSchema);
}

module.exports = Admin;
票数 48
EN

Stack Overflow用户

发布于 2013-11-03 02:21:23

我尽量避免使用全局变量,因为所有的东西都是通过引用来实现的,所以事情可能会变得混乱。我的解决方案

model.js

代码语言:javascript
复制
  try {
    if (mongoose.model('collectionName')) return mongoose.model('collectionName');
  } catch(e) {
    if (e.name === 'MissingSchemaError') {
       var schema = new mongoose.Schema({ name: 'abc });
       return mongoose.model('collectionName', schema);
    }
  }
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14641834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档