我有一个通用的方法来更新MongoDB中任何集合的文档?
以下代码位于文件名Deleter.js中
module.exports.MongooseDelete = function (schemaObj, ModelObject);
{
var ModelObj = new mongoose.Model("collectionName",schemaObj);
ModelObj.remove(ModelObject);
}
并在我的主文件app.js中按如下方式调用
var ModObj = mongoose.model("schemaName", schemasObj);
var Model_instance = new ModObj();
var deleter = require('Deleter.js');
deleter.MongooseDelete(schemasObj,Model_instance);
我收到以下错误:
OverwriteModelError: Cannot overwrite `undefined` model once compiled.
at Mongoose.model (D:\Projects\MyPrjct\node_modules\mongoose\lib\index.js:4:13)
我只调用了第二个方法..如果有人有什么解决办法,请告诉我。
发布于 2013-03-06 22:28:00
我认为您已经在同一模式上实例化了两次mongoose.Model()
。您应该只创建一次每个模型,并拥有一个全局对象,以便在需要时获取它们
我假设您在$YOURAPP/models/
目录下的不同文件中声明了不同的模型
$YOURAPPDIR/models/
- index.js
- A.js
- B.js
index.js
module.exports = function(includeFile){
return require('./'+includeFile);
};
A.js
module.exports = mongoose.model('A', ASchema);
B.js
module.exports = mongoose.model('B', BSchema);
在你的app.js中
APP.models = require('./models'); // a global object
当你需要它的时候
// Use A
var A = APP.models('A');
// A.find(.....
// Use B
var B = APP.models('B');
// B.find(.....
发布于 2014-10-06 21:39:20
我设法像这样解决了这个问题:
var Admin;
if (mongoose.models.Admin) {
Admin = mongoose.model('Admin');
} else {
Admin = mongoose.model('Admin', adminSchema);
}
module.exports = Admin;
发布于 2013-11-03 02:21:23
我尽量避免使用全局变量,因为所有的东西都是通过引用来实现的,所以事情可能会变得混乱。我的解决方案
model.js
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);
}
}
https://stackoverflow.com/questions/14641834
复制相似问题