猫鼬钩子方法中的这个关键字

时间:2019-03-10 07:41:40

标签: javascript mongodb mongoose this

import mongoose from 'mongoose';

const userSchema = new mongoose.Schema({
    username: {
        type: String,
        unique: true
    }
});

userSchema.statics.findByLogin = async function(login) {
    let user = await this.findOne({
        username: login,
    })

    if(!user) {
        user = await this.findOne({ email: login });
    }

    return user;
};

// what does this keyword refers to
userSchema.pre('remove', function(next) {
    this.model('Message').deleteMany({ user: this._id }, next);
});

const User = mongoose.model('User', userSchema);

export default User;

当删除用户时,我只是在userSchema上编写了一个hook方法,该方法删除了由该用户编写的消息。我的问题是this.model('Message').deleteMany({ user: this._id }, next);,在这种情况下,这指的是什么。我虽然第一个指的是猫鼬,第二个指的是当前已删除的用户,但这是否表示此语句中的其他内容?

0 个答案:

没有答案