Свойство "пароль" не существует для типа Документ - PullRequest
0 голосов
/ 06 декабря 2018

Я получаю эту ошибку Свойство "пароль" не существует для типа Документ.Так кто-нибудь может сказать, если что-то не так с моим кодом?

const userSchema = new mongoose.Schema({
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  name: { type: String, required: true }
});

userSchema.pre("save", function save(next) {
  const user = this;
  if (!user.isModified("password")) {
    return next();
  }
  bcrypt.genSalt(10, (err, salt) => {
    if (err) {
      return next(err);
    }
    bcrypt.hash(user.password, salt, (err: mongoose.Error, hash) => {
      if (err) {
        return next(err);
      }
      user.password = hash;
      next();
    });
  });
});

enter image description here

1 Ответ

0 голосов
/ 06 декабря 2018

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

/**
 * Defines a pre hook for the document.
 */
pre<T extends Document = Document>(
  method: "init" | "validate" | "save" | "remove",
  fn: HookSyncCallback<T>,
  errorCb?: HookErrorCallback
): this;

, и если у вас есть интерфейс, подобный приведенному ниже,

export interface IUser {
  email: string;
  password: string;
  name: string;
}

Добавить тип с крюком предварительного сохранения,

userSchema.pre<IUser>("save", function save(next) { ... }
...