【问题标题】:how to override function of mongoose plugin?如何覆盖猫鼬插件的功能?
【发布时间】:2014-05-09 00:56:10
【问题描述】:

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

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

问题是 myplugin 中也定义了 createCustomDoc 方法。 现在我想用定义为 user.statics.createCustomDoc 的方法覆盖 myplugin 的createCustomDoc

目前调用的方法来自插件,而不是我在 user.statics.createCustomDoc 中编写的那个。

我该怎么做?

当然,我不想更改函数的名称,也不想删除插件,也不想更改插件的代码。

【问题讨论】:

  • 我有同样的问题,我需要将一些数据保存为原始数据和稍作修改的其他集合,我想覆盖 mongoose CRUD 来做到这一点。
  • 我刚刚用 mongoose 4.1.7 对此进行了测试,现在它可以正常工作了。

标签: node.js mongodb mongoose mongoose-plugins


【解决方案1】:

我在覆盖 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);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2015-01-06
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多