Mongoose: рдкреНрд░реА рд╕реЗрд╡ рд╣реБрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рд╕рд┐рддре░ 2015  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдкреНрд░реА рд╕реЗрд╡ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ 'рдпрд╣' рдореБрдЭреЗ рд╕рд╣реЗрдЬреЗ рдЬрд╛ рд░рд╣реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рджреЗрддрд╛ рд╣реИред

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) {}); рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ES6 рдореЗрдВ рдлреИрдЯ рдПрд░реЛ this рдХреЛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдХреЛрдк рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ , рдЬреЛ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ this рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдЬреИрд╕рд╛ рд╣реА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп User.pre('save', function(next) {}); рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ ?, рдореИрдВ 'рдлрд╝рдВрдХреНрд╢рди' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрдЯреАрдПрдо рдирд╣реАрдВ, рдкреВрд░реНрд╡ рд╣реБрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ this рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдореЛрдЯреЗ рддреАрд░ рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lukasz-zak picture lukasz-zak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamreisnz picture adamreisnz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamreisnz picture adamreisnz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Soviut picture Soviut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

weisjohn picture weisjohn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ