【发布时间】:2017-06-13 22:09:13
【问题描述】:
我是 Express 和 Mongoose 的新手。我在读这个tutorial
这是教程中的一个 sn-p,其中一个 user 被保存在数据库中。
// Execute before each user.save() call
UserSchema.pre('save', function(callback) {
var user = this;
// Break out if the password hasn't changed
if (!user.isModified('password')) return callback();
// Password changed so we need to hash it
bcrypt.genSalt(5, function(err, salt) {
if (err) return callback(err);
bcrypt.hash(user.password, salt, null, function(err, hash) {
if (err) return callback(err);
user.password = hash;
callback();
});
});
});
-
this到底是什么。this是指新的/修改过的文档还是this是指存储在数据库中的旧文档?我想this是新文档。那么是否有任何关键字可以访问旧文档?我认为,在最坏的情况下,由于这是预保存,我可以使用findOne访问旧/保存的文档。还有比这种方法更好的方法吗? - 这里作者正在检查密码是否已更改。所以我想
isModified,比较新文档和旧文档中的给定字段,并根据修改与否返回一个布尔值。问题是,作者在保存时保存了一个哈希,但是在检查修改时,我想他应该先创建哈希,然后检查哈希是否相同。我是对的,还是我在这里遗漏了什么。
【问题讨论】:
标签: mongoose