Пытаясь понять виртуальные методы в мангусте - PullRequest
0 голосов
/ 20 февраля 2020

Если бы я определил виртуальное поле в своей схеме. Как я могу ссылаться на this._password в UserSchema.path () {} было бы бессмысленно использовать пароль для получения this._password, возвращаемого из моего виртуального метода get , Мне нужно немного уточнить понимание нюансов mon goose. Кстати, это не мой код, это из книги MERN STACK, которую я сейчас читаю. Если я заменю this._password на this.password, он все еще работает, но я не знаю почему. Может ли кто-нибудь помочь мне понять это

UserSchema
  .virtual('password')
  .set(function(password) {
  this._password = password
  this.salt = this.makeSalt()
  this.hashed_password = this.encryptPassword(password)
 })
 .get(function() {
   return this._password
 })

UserSchema.path('hashed_password').validate(function(v) {
  if (this._password && this._password.length < 6) {
    this.invalidate('password', 'Password must be at least 6 characters.')
  }
  if (this.isNew && !this._password) {
    this.invalidate('password', 'Password is required')
  }
}, null)
...