(18)被迫吃芒果的前端工程師 - Mongoose 之 Static methods

前言

接下來講一個跟 Instance methods 很像的 Static methods,但 Static methods 其實跟 Instance methods 是不同的東西唷。

Static methods

為什麼會說 Static methods 跟 Instance methods 很像呢?因為寫法非常像,例如輸出全部使用者的年齡

1
2
3
userSchema.statics.getUserAge = function() {
return this.find({}).then((data) => data.map((item) => item.age));
}

接下來只需要這樣用就可以了

1
2
3
User.getUserAge().then((age) => {
console.log('age', age)
})

那這邊回來看一下 Instance methods 寫法

1
2
3
userSchema.methods.getBirthYear = function() {
return new Date().getFullYear() - this.age;
}

可以發現 Static methods 跟 Instance methods 真的很像,但是這邊有一個重點

「Instance methods 是基於 Schema 下運作與使用」

因此在 Instance methods 中,我們是這樣用

1
2
3
4
User.findOne({nickname: 'RayXu'}).then((data) => {
console.log('data', data);
console.log('getBirthYear', data.getBirthYear());
})

但 Static methods 則是基於 Model 因此類似包裝成自己的一種 find

1
2
3
User.getUserAge().then((age) => {
console.log('age', age)
})

這個就是最簡單的 Static methods 跟 Instance methods 差異。

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ