рдкреНрд░реА рд╕реЗрд╡ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ 'рдпрд╣' рдореБрдЭреЗ рд╕рд╣реЗрдЬреЗ рдЬрд╛ рд░рд╣реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рджреЗрддрд╛ рд╣реИред
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)
рд╕рдВрднрд╡рддрдГ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ?
рдкреБрдирд╢реНрдЪ: рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддрдм рдмрдЪрд╛рддрд╛ рд╣реИ рдЬрдм рдкреВрд░реНрд╡ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ES6 рдореЗрдВ рдлреИрдЯ рдПрд░реЛ this
рдХреЛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдХреЛрдк рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ , рдЬреЛ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ this
рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдЬреИрд╕рд╛ рд╣реА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп User.pre('save', function(next) {});
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдХреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ ?, рдореИрдВ 'рдлрд╝рдВрдХреНрд╢рди' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрдЯреАрдПрдо рдирд╣реАрдВ, рдкреВрд░реНрд╡ рд╣реБрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ this
рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдореЛрдЯреЗ рддреАрд░ рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
ES6 рдореЗрдВ рдлреИрдЯ рдПрд░реЛ
this
рдХреЛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдХреЛрдк рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ , рдЬреЛ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░this
рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдЬреИрд╕рд╛ рд╣реА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдпUser.pre('save', function(next) {});
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред