Il motivo per cui non funzionava era perché stavo usando un metodo a freccia. Ho dovuto renderlo una funzione normale:
userSchema.methods.setPassword = function (password) {
Il motivo è perché le funzioni freccia trattano this
diversamente dalle normali funzioni. Si prega di vedere quanto segue per maggiori dettagli:
http://exploringjs.com/es6/ch_arrow-functions.html