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