4
我跑在MEAN.js一些項目對象的屬性和我有以下問題。我希望做一些用戶的個人資料計算和保存到數據庫中。但是,有一個在用戶模型方法的問題:的Javascript刪除不工作
UserSchema.pre('save', function(next) {
if (this.password && this.password.length > 6) {
this.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64');
this.password = this.hashPassword(this.password);
}
next();
});
如果我將與我的變更發送密碼,它會改變憑證,以便用戶無法登錄下一次。我想保存之前刪除用戶對象的密碼,但我不能這樣做(讓我們來看看下面我的代碼中的註釋):
exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
/* Some calculations and user's object changes */
req.login(user, function(err) {
if(err) {
res.status(400).send(err);
} else {
console.log(delete user.password); // returns true
console.log(user.password); // still returns password :(
//user.save();
//res.json(user);
}
});
}
})(req, res, next);
};
有什麼不對?爲什麼delete方法返回true,但沒有任何反應?感謝您的幫助:)
不嚴格模式刪除將返回true,即使該屬性不能被刪除。同時刪除將返回true,當通過原型鏈所得的財產沒有任何效果。 – Prusse
'「使用嚴格的」;'是我的控制器文件的第一行。但我怎樣才能刪除密碼屬性? – user3216673
這似乎不太可能,但是您是否檢查'password'屬性是否是'user'對象的屬性,並且不是來自原型鏈上的某個人(hasOwnProperty)?設置爲「未定義」將不夠用(對不起,沒有平均堆棧的經驗)?至於JSON編碼去那裏應該在結果沒有差異。 – Prusse