Ada masalah dengan kait pra penyimpanan di mana 'ini' seharusnya memberi saya dokumen yang disimpan tetapi malah memberikan yang tidak terdefinisi.
import mongo from 'mongoose'
import crypt from 'bcryptjs'
const User = new mongo.Schema({
username: {type: String, unique: true, required: true},
password: {type: String, select: false, required: true}
// token: {type: String}
})
//
User.pre('save', (next) => {
console.log(this);
if (this.isModified('password') || this.isNew) {
crypt.genSalt(10, (err, salt) => {
if (err) {
next(err)
} else {
crypt.hash(user.password, salt, (err, hash) => {
if (err) {
next(err)
} else {
user.password = hash
next()
}
})
}
})
} else {
next()
}
})
export default mongo.model('User', User)
Apa yang mungkin menjadi kesalahan?
PS: Ini menghemat secara normal ketika pra hook sedang tidak digunakan.
Panah gemuk di ES6 mengikat this
ke lingkup leksikal , yang merupakan cara yang bagus untuk mengatakan bahwa this
di dalam fungsi panah sama dengan di luar fungsi panah. Gunakan User.pre('save', function(next) {});
sebagai gantinya.
Apakah ada cara untuk mendapatkan objek dengan fungsi panah ?, saya akan menggunakan 'fungsi' tetapi panduan gaya dikenakan dalam proyek.
Sayangnya bukan atm, pra kait secara eksplisit mengandalkan melewatkan dokumen melalui this
daripada sebagai parameter. Panah gemuk tidak akan bekerja dengan paradigma ini.
Komentar yang paling membantu
Panah gemuk di ES6 mengikat
this
ke lingkup leksikal , yang merupakan cara yang bagus untuk mengatakan bahwathis
di dalam fungsi panah sama dengan di luar fungsi panah. GunakanUser.pre('save', function(next) {});
sebagai gantinya.