Как использовать mon goose .Schema.pre () в среде машинописи? - PullRequest
0 голосов
/ 10 января 2020
userSchema.pre('save',(next)=>{
    if(!this.isModified('password')){
        return next();
    }
    this.password = user.encryptPassword(this.password);
    next();
})

В приведенном выше коде компилятор машинописного текста говорит мне, что «this» является типом «globalThis». Однако в JavaScript мы всегда считаем, что он имеет тип 'mon goose .Document'. Здесь я хочу получить доступ к методу isModified определенного объекта mon goose .Document, и мы можем использовать только this для доступа к нему. Как заставить компилятор машинописи знать или учитывать, что «this» имеет тип mon goose .Document?

1 Ответ

0 голосов
/ 10 января 2020

Проблема в том, что вы используете функции стрелок . Функция стрелки приведет фактический контекст к базовой функции. Решение состоит в том, чтобы исключить использование функции стрелки, чтобы применялся естественный контекст функции. как:

userSchema.pre('save', function (next) {
    if(!this.isModified('password')){
        return next();
    }

    this.password = user.encryptPassword(this.password);

    next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...