Mon goose имеет одинаковую функцию для сохранения и обновления промежуточного программного обеспечения - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть вопрос: как заставить промежуточное ПО работать на двух разных хуках? Я хочу заменить этот код:

userSchema.pre('save', function(next) {
  if (!this.localAuth.password) next();
  this.localAuth.password = this.generateHash(this.localAuth.password);
  next();
})
userSchema.pre('update', function(next) {
  if (!this.localAuth.password) next();
  this.localAuth.password = this.generateHash(this.localAuth.password);
  next();
})

на что-то вроде этого:

userSchema.pre('saveOrUpdate', function(next) {
  if (!this.localAuth.password) next();
  this.localAuth.password = this.generateHash(this.localAuth.password);
  next();
})

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

1 Ответ

2 голосов
/ 13 января 2020

Вы можете создать отдельную функцию для аутентификации, а затем вызвать ее из обеих ловушек.

function auth ( next ) {
    //do stuff here
    if (!this.localAuth.password) next();
    this.localAuth.password = this.generateHash(this.localAuth.password);
    next();
}

//for save operation
userSchema.pre("save", auth);

//update operation 
userSchema.pre("update", auth);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...