【发布时间】:2013-01-16 12:02:41
【问题描述】:
我有一个通用的方法来更新 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)
我只获得第二个方法调用.. 如果有人有解决方案,请告诉我。
【问题讨论】:
-
你想用
MongooseDelete做什么?为什么不直接打电话给Model_instance.remove();? -
我只是想在我的自定义模块中使删除调用成为一种常用方法。即使我调用 MongooseDelete(/*params*/) 如果架构相同,我也会工作 n 次,当我尝试删除不同模式的文档,我收到上面的错误消息。感谢您对回答的兴趣...
-
你不能把
MongooseDelete改成只打电话给ModelObject.remove();吗? -
在“MongooseDelete”中,我需要“ModelObject”来调用“remove()”方法,并且应该使用特定模式创建“ModelObject”。这就是我通过值(_id 等)传递 'SchemaObject' 和 2ne 'ModelObject' 的唯一原因。
-
你不能在两个执行文件中导入模式,当你的程序加载时它会找到两个模型并显示模型的覆盖消息。