Как получить sh пароль перед сохранением пользователя в node js и мангусте - PullRequest
2 голосов
/ 07 марта 2020

это моя модель пользователя:

const schema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    min: 6,
    max: 255
  },
  email: {
    type: String,
    required: true,
    min: 6,
    max: 255
  },
  password: {
    type: String,
    required: true,
    max: 1024,
    min: 6
  }
});

schema.pre("save", async next => {
  if (!this.isModified("password")) return next();
  try {
    const salt = await bcrypt.genSalt(10);
    this.password = await bcrypt.hash(this.password, salt);
    return next();
  } catch (error) {
    return next(erro);
  }
});

module.exports = mongoose.model("User", schema);

когда я сохраняю пользователя, он возвращает пустой объект, и он не сохраняется и не работает. я не знаю что делать? в чем проблема?

1 Ответ

1 голос
/ 07 марта 2020

Вы должны использовать форму функции вместо функции стрелки в промежуточном программном обеспечении предварительного сохранения. Потому что функции Arrow не связывают свои собственные this.

schema.pre("save", async function(next) {
  if (!this.isModified("password")) return next();
  try {
    const salt = await bcrypt.genSalt(10);
    this.password = await bcrypt.hash(this.password, salt);
    return next();
  } catch (error) {
    return next(error);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...