相关疑难解决方法(0)

为什么我不能删除mongoose模型的对象属性?

当用户向我的API注册时,会返回一个用户对象.在返回对象之前,我删除了散列密码和salt属性.我必须使用

user.salt = undefined;
user.pass = undefined;
Run Code Online (Sandbox Code Playgroud)

因为当我尝试

delete user.salt;
delete user.pass;
Run Code Online (Sandbox Code Playgroud)

对象属性仍然存在并被返回.

这是为什么?

javascript mongoose node.js

22
推荐指数
3
解决办法
5725
查看次数

Javascript删除对象属性不起作用

我正在MEAN.js上运行一些项目,我遇到了以下问题.我想做一些用户的配置文件计算并将其保存到数据库.但是用户模型中的方法存在问题:

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();
});
Run Code Online (Sandbox Code Playgroud)

如果我将使用我的更改发送密码,它将更改凭据,因此用户下次无法登录.我想在保存之前从用户对象中删除密码,但是我无法做到(让我们看看下面代码中的注释):

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);
}; …
Run Code Online (Sandbox Code Playgroud)

javascript mean-stack

12
推荐指数
4
解决办法
2万
查看次数

标签 统计

javascript ×2

mean-stack ×1

mongoose ×1

node.js ×1