1
我是Express和Mongoose的新手。我正在閱讀這篇文章tutorial 以下是教程中的一個片段,其中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
是指舊的存儲在db中?我想this
是新文件。那麼有沒有關鍵字可以訪問舊文檔?在最壞的情況下,我認爲,由於這是預存儲,所以我可以使用findOne
訪問舊的/保存的文檔。有沒有比這種方法更好的東西? - 作者正在檢查密碼是否已更改。所以我想
isModified
,比較新文檔和舊文檔中的給定字段,並根據修改或不修改返回一個布爾值。問題是,保存作者保存了散列,但在檢查修改時,我想他應該先創建散列,然後檢查散列是否相同。我是對的,還是我在這裏錯過了一些東西。