2014-03-29 22 views
4

我有一個插件在貓鼬和對每個方案我做以下如何重寫mongoose插件的功能?

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

問題是createCustomDoc方法也爲myplugin定義。 現在我想用定義爲user.statics.createCustomDoc的方法覆蓋myplugin的createCustomDoc

當前調用的方法來自插件,而不是我在user.statics.createCustomDoc中編寫的方法。

我該怎麼做。

當然,我不想更改函數的名稱,也不想更換插件,也不想更改插件的代碼。

+0

我有同樣的問題,我需要一些數據保存爲原始和其他集合稍作修改,我想重寫貓鼬CRUD來做到這一點。 –

+0

我剛剛用貓鼬4.1.7測試了它,它現在按預期工作。 –

回答

0

我面臨着類似的問題,同時超控貓鼬查詢功能,並試圖這樣的事情,它工作

//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); 

}