1
我有問題,鹽生成和密碼編碼已準備好,當文檔已保存。 => mongoosejs不會等到哈希完成,所以我們在數據庫中沒有密碼和鹽(但我可以console.log他們:)。貓鼬ODM:無法保存編碼的密碼,因爲異步
有什麼可以避免這種行爲嗎?
- 服務員的功能?
- 或者我應該將編碼部分移入某些預保存中間件?
編碼方法
UserSchema.methods.encodePassword = function(password) {
crypto.randomBytes(32, function(err, buf) {
this.salt = buf.toString('hex');
console.log(this.salt);
crypto.pbkdf2(password, this.salt, 25000, 512, function(err, encodedPassword) {
if (err) throw err;
this.password = encodedPassword;
console.log(this.password);
}.bind(this));
});
};
路由操作
// creates a new user
app.post('/users', function(req, res) {
// create new user
var user = new User();
// assign post
user.username = req.body.username;
user.email = req.body.email;
user.encodePassword(req.body.password);
user.save(function(err, user) {
console.log(user);
if (!err) return res.send(err, 500);
return res.json(user);
});
});
嘿,由於某些原因,這仍然不起作用。我假設UserSchema.methods.encodePassword沒有對模型的語義訪問。我會檢查這個 – bodokaiser 2012-07-19 07:38:14
我會問在貓鼬谷歌組。文檔是簡約的方式。但是,我永遠不知道何時以及如何通過setter,方法,插件來訪問模型屬性 – bodokaiser 2012-07-19 07:49:52