Свойство «пароль» не существует для типа «Документ» - PullRequest
1 голос
/ 29 апреля 2020

У меня есть PartnerSchema

export const PartnerSchema: Schema = new Schema({
  id: {
        type: Number,
        require: [true, "EL id es necesario"],
        default: 0
  },
  password :{type:String},

});

, и я пытаюсь получить sh пароль схемы перед сохранением документа в базе данных с помощью этой функции в том же файле

PartnerSchema.pre('save', function(next){

  let user = this;

  // Make sure not to rehash the password if it is already hashed
  if(!user.isModified('password')) return next();

  // Generate a salt and use it to hash the user's password
    bcrypt.genSalt(10, (err, salt) => {

      if(err) return next(err);

      bcrypt.hash(user.password, salt, (err, hash) => {

          if(err) return next(err);
          user.password = hash;
          next();

      });

  });

Но в bcrypt.hash(user.password, salt, (err, hash) => { я получаю эту ошибку

Property 'password' does not exist on type 'Document'

Почему я получаю эту ошибку с идентификатором user = this со всеми свойствами?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Вы можете следовать этому коду

Вы можете определить файл модели с этим кодом и требовать bcrypt js

PartnerSchema.pre('save',function(next){

   this.password= bcrypt.hashsync(this.password,10)

   next()

})
1 голос
/ 29 апреля 2020

Вам необходимо определить интерфейс для вашей предварительной ловушки

export interface IUser extends mongoose.Document {
  password: string
}

PartnerSchema.pre<IUser>('save', function(next){...}
...