我在Mongoose中有一个插件,对于每个模式,我将执行以下操作

var user = new Schema({});
user.plugin(myplugin);
user.statics.createCustomDoc = function() {
.....
}

问题是createCustomDoc方法也是在myPlugin中定义的。
现在我想用定义为user.statics.createcustomdoc的方法覆盖myplugin的createCustomDoc
当前调用的方法来自插件,而不是我在user.statics.createcustomdoc中编写的插件。
我该怎么做?
当然,我不想改变函数的名称,也不想删除插件,也不想改变插件的代码。

最佳答案

我在重写Mongoose查询函数时遇到了类似的问题,并尝试了类似的方法,结果成功了

//store reference to original myPlugin createCustomDoc function
var createCustomDoc = user.statics.createCustomDoc;

//override that function
user.statics.createCustomDoc = function (options, callback) {
   var self = this;
   //after your code, call original function
   createCustomDoc.call(self, options, callback);

}

08-19 03:14