Mongoose 的實例方法中訪問靜態方法

方法比較簡單,也比較粗糙和醜陋,就是經過構造函數來訪問靜態方法,大體以下:函數

1
2
3
4
5
6
7
8
9
WorkSpaceSchema.methods.getPrice = function(startTime, endTime){
// ...
var result = days * Math.floor(this.constructor.getPricePerDay(this.discountPrice || this.price, this.priceType));
// ...
};

WorkSpaceSchema.statics.getPricePerDay = function(price, priceType){
// code
};

看到這個解決方案後,第一想法是,Mongoose 在設計的時候,爲何沒有考慮方法之間的訪問這一情形呢,仔細一想,靜態方法的設計初衷,只是爲了經過對 Model 已有方法進行擴充和自定義,建立出一些特別的搜索方法之類,而若是想要建立在其它方法中調用的方法,更好的解決辦法是寫單獨的模塊,而後再導出和調用。ui

相關文章
相關標籤/搜索