什么"这"在下面的代码中指的是什么?

时间:2017-05-12 09:51:45

标签: node.js express mongoose bcrypt

我正在查看一些教程,在那里我找到了一段我坚持的代码。请帮助我理解这段代码。我在评论中标记了这些问题。

Code

UserSchema.pre('save', function(next){    //this is a pre hook which is used.understood.

    var user = this; // what is the function of this?
    var SALT_FACTOR = 5;

    if(!user.isModified('password')){  //not understood.From where this function arises?I did not found this anywhere in mongoose tutorial/api.
        return next();
    } 

    bcrypt.genSalt(SALT_FACTOR, function(err, salt){

        if(err){
            return next(err);
        }

1 个答案:

答案 0 :(得分:1)

A"预先保存" Mongoose中的中间件是"文档中间件"

The documentation州:

  

...在文档中间件中,this指的是正在更新的文档。

因此this指的是要保存的文档。

这也提供了isModified是什么的线索:它是一种文档方法,可用于检查特定字段{@ 1}}是否已被修改,因为早先从数据库中检索了文档。

在您发布的代码中,如果密码未被更改,则无需再次哈希(使用password),以便跳过该步骤调用bcrypt并从中间件返回。

此处记录了

nexthttp://mongoosejs.com/docs/api.html#document_Document-isModified