1
我遇到了問題,我無法解決。 我會盡力將其描述爲儘可能有意義和簡單。 這是我的方法,來處理POST請求,並保存數據:貓鼬|預保存鉤子中的對象更改不會保存到db
app.post('/users/', (req, res) => {
let body = _.pick(req.body, ["email", "password"]);
let user = new User(body);
user.save().then(
user => res.json(user),
err => res.send(err)
)
});
當我保存新的用戶數據庫,這預存鉤火災:
userSchema.pre('save', function(next) {
var user = this;
if(user.isNew){
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(user.password, salt, (err, hash) => {
user.password = hash;
console.log(user);
next();
})
})
}
next();
})
對於POST身體此輸入:從預保存鉤日誌
{
"email": "[email protected]",
"password": "somepass"
}
的console.log:
{ __v: 0,
email: '[email protected]',
password: '$2a$10$tWuuvw.wGicr/BTzHaa7k.TdyZRc5ADDV0X1aKnItvVm6JYVe5dsa',
_id: 59482e8136fd8d2bf41e24b7
}
然而,在分貝我有:
{
"_id" : ObjectId("59482e8136fd8d2bf41e24b7"),
"email" : "[email protected]",
"password" : "somepass",
"__v" : 0
}
用戶對象上顯然不保存更改並在save()方法我仍然使用舊的價值觀念與散列的口令。這是爲什麼?我怎樣才能從預存儲鉤子進行更改存儲?
我簡直不能相信我沒有弄清楚它在我自己的。這非常愚蠢。 JohnnyHK非常感謝!最好的祝福! – kkotula